News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

ROSE Documentation

Started by liamnajor, April 29, 2019, 02:53:29 PM

Previous topic - Next topic

liamnajor

You know when I said I would make this after I finished the object editor? Yeah...I didn't technically lie...

Anyway, I need some critique. Is anything missing? Was I unclear? Is it too ugly? (not much I can do if the last one is your complaint, graphics are not my forte) tell me!

https://liamnajor.github.io/ROSE-how-to/

trudbol

#1
A year late: well done on getting this up and running!
I sent you a PM, but am trying here as well, perhaps my questions / feedback may overlap with what others may say.

NOTE OF CAUTION: I'm a total newbie when it comes to hacking, but I have read all the Wiki / Forum / ROSE documentation I could get my hands on.

ROOM

  • it would help to highlight with a red box the currently selected tile in the Tileset
  • please display some kind of info in the 16x16 Bank grid. Ideas: display a (rough) map of the Bank, or perhaps at least display Room pointer IDs in the boxes.
  • not all Tilesets are used in each Bank: it would help the user to either have the info displayed somewhere, or that you the programmer force only certain Tilesets to be accessible.
  • for the life of me I can't remember what Bank the "caves", "ruins", etc. correspond to. Perhaps this info could be displayed somewhere?
  • I'd appreciate having more information on the tiles I'm selecting. There are some blocks that have one version that Samus stands on and another that Samus can walk through. Which is which?
  • it would be fantastic for the currently edited Room to see the neighboring Room it points to. A simpler version: add more verbose to the Room Transition section

OBJECTS

  • I have been generally unable to add any enemies or Metroids without them having glitched graphics. Is it me or is the enemy Tileset not being loaded properly? If some enemies can't be displayed properly within a given Bank because loading the proper Tileset is a hassle, please make it impossible to create the given enemy (or give the user a visual warning).
  • OBJ Type: a dropdown menu with the (names + type number) would be helpful (like "Gamma Metroid - A3").
  • the "View Object data" and "Delete object" buttons should be next to the "OBJ Type" and "OBJ ID" boxes, as it's part of the same functionality. it's a little confusing.

SAMUS

  • When I place Samus anywhere outside of Bank F, all the enemies have incorrect Tilesets and look all glitchy, even the original ones. Am I perhaps using an incorrect ROM version, and if so, where do I get this information?

SCROLL / ROOM TRANSITION

  • Perhaps a little ambitious... but I'd love to have more information regarding the Room Transition code. I roughly understand it's a language of its own, specifying what to do when changing Rooms, like what music to play, what Tilesets to load, what solidity Samus has, etc. Whatever info the user can get (even if we can't edit it), would be appreciated. For instance: change music to XX, warp to Bank XX, change Tileset to XX, etc.
  • The "Scroll" text box should be a dropdown menu, so as to limit options for the user. Please add an explanation for the codes like "06-Stop Scrolling Up Left Corner"

OTHER

  • You could add Hex Tweaks options to hack the ROM, using the Wiki webpage id=return_of_samus:hex_changes (sorry, not allowed to add links yet...)

liamnajor

Quote from: trudbol on March 06, 2020, 10:53:42 AM
A year late: well done on getting this up and running!
I sent you a PM, but am trying here as well, perhaps my questions / feedback may overlap with what others may say.

NOTE OF CAUTION: I'm a total newbie when it comes to hacking, but I have read all the Wiki / Forum / ROSE documentation I could get my hands on.

ROOM

  • it would help to highlight with a red box in the currently selected tile in the Tileset
  • please display some kind of info in the 16x16 Bank grid. Ideas: display a (rough) map of the Bank, or perhaps at least display Room pointer IDs in the boxes.
  • not all Tilesets are used in each Bank: it would help the user to either have the info displayed somewhere, or that you the programmer force only certain Tilesets to be accessible.
  • for the life of me I can't remember what Bank the "caves", "ruins", etc. correspond to. Perhaps this info could be displayed somewhere?
  • I'd appreciate having more information on the tiles I'm selecting. There are some blocks that have one version that Samus stands on and another that Samus can walk through. Which is which?
  • it would be fantastic for the currently edited Room to see the neighboring Room it points to. A simpler version: add more verbose to the Room Transition section

OBJECTS

  • I have been generally unable to add any enemies or Metroids without them having glitched graphics. Is it me or is the enemy Tileset not being loaded properly? If some enemies can't be displayed properly within a given Bank because loading the proper Tileset is a hassle, please make it impossible to create the given enemy (or give the user a visual warning).
  • OBJ Type: a dropdown menu with the (names + type number) would be helpful (like "Gamma Metroid - A3").
  • the "View Object data" and "Delete object" buttons should be next to the "OBJ Type" and "OBJ ID" boxes, as it's part of the same functionality. it's a little confusing.

SAMUS

  • When I place Samus anywhere outside of Bank F, all the enemies have incorrect Tilesets and look all glitchy, even the original ones. Am I perhaps using an incorrect ROM version, and if so, where do I get this information?

SCROLL / ROOM TRANSITION

  • Perhaps a little ambitious... but I'd love to have more information regarding the Room Transition code. I roughly understand it's a language of its own, specifying what to do when changing Rooms, like what music to play, what Tilesets to load, what solidity Samus has, etc. Whatever info the user can get (even if we can't edit it), would be appreciated. For instance: change music to XX, warp to Bank XX, change Tileset to XX, etc.
  • The "Scroll" text box should be a dropdown menu, so as to limit options for the user. Please add an explanation for the codes like "06-Stop Scrolling Up Left Corner"

OTHER

  • You could add Hex Tweaks options to hack the ROM, using the Wiki webpage id=return_of_samus:hex_changes (sorry, not allowed to add links yet...)
It already highlights the selected tile, just with the worst contrast in history (I never bothered to fix it because....reasons). The banks are going to be "fully" drawn using a simplified bitmap of the proper tilesets. This can not and will not work (well) until tilesets auto-select correctly, which requires complex logic I haven't even drafted out yet. Same applies to enemy graphics, only in that case it's even worse: you HAVE to select the proper graphics with a room transition. The VRAM is TINY, so m2 constantly shifts graphics about. This, among other even more technical reasons, is why most enemies look garbled. I made a rough list enemy types at http://wiki.metroidconstruction.com/doku.php?id=return_of_samus:technical_information:enemy_data some time ago, I just haven't bothered convert this data to a javascript readable form yet. I left all tilesets in all banks for the sake of other hackers, who might stretch a single bank beyond even these tilesets. Banks locations...didn't even occur to me. I've memorized most of the layout at this point, having pored over it so much and being relatively simplistic. Once metatiles and collision data are even acknowledged in ROSE, let alone be editable, they'll be drawn as well. Same with room transitions. The GUI in general is pretty bad, I slapped it together as I went. I might make a javascript to m2SCRIPT interpriter...I can't really think of another way to edit those scripts and have it be user-friendly. So much logic I should've done first...I'll buckle down and take care of this and the many, many other issues with ROSE as soon as the already quite extensive list is complete. That, and i find the time.

P.JBoy

As for the screen transition commands, these are from my notes:


0x bb ssss dddd nnnn      Load            tiles     from $b:s to d,     size n
01 bb ssss dddd nnnn      Load background tiles     from $b:s to d,     size n
B1 bb ssss                Load background tiles     from $b:s to $9000, size 800h
02 bb ssss dddd nnnn      Load enemy      tiles     from $b:s to d,     size n
B2 bb ssss                Load enemy      tiles     from $b:s to $8B00, size 400h

1x                        Load metatile definitions from $8:s to $DA00, size 200h, where s = [$8:7F1A + x * 2]
2x                        Load tile properties      from $8:s to $DC00, size 100h, where s = [$8:7EEA + x * 2]
Dx                        Load item       tiles     from $7:s to $8B40, size 40h,  where s = $7790 + (x - 1 & Fh) * 40h
                          Load message    tilemap   from $1:s to $9C20, size 10h,  where s = [$1:58F1 + x * 2]
                          Load character  tiles
{
    D0: Plasma beam
    D1: Ice beam
    D2: Wave beam
    D3: Spazer beam
    D4: Bombs
    D5: Screw attack
    D6: Varia suit
    D7: Hi-jump
    D8: Space jump
    D9: Spider ball
    DA: Spring ball
}

3x                        Set solid block thresholds from $8:7EFA + x * 4
4b yx                     Room bank = b, screen Y position high = y, screen X position high = x
5x                        Used when exiting Metroid Queen's room
6x aa ss                  Acid damage = a, spike damage = s
7x                        Used when exiting Metroid Queen's room after killing her
8b yyyy xxxx YYYY XXXX    Used when entering Metroid Queen's room. Room bank = b, screen Y position = y, screen X position = x, Samus' Y position = Y, Samus' X position = X
9x mm iiii                If [real number of metroids remaining] <= m: screen transition command index = i, else loop
Ax                        Wait 4 frames, then brighten palette every 10h frames for 30h frames

Cx                        Disable Baby Metroid cry.
                          If isolated sound effect != Eh:
                              Song to play = song for room = x
                              Song to play after earthquake = 00h

CA                        Enable Baby Metroid cry.
                          If isolated sound effect != Eh:
                              Song to play = song for room = FFh
                              Song to play after earthquake = 00h
                          Else:
                              Song to play after earthquake = FFh

CB                        Enable Baby Metroid cry.
                          If isolated sound effect != Eh:
                              Song to play = song for room = Metroid Queen hallway,
                              Song to play after earthquake = 00h

FF                        Terminator

...