News:

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

Main Menu

Metroid Editors/Help Thread

Started by Zhs2, May 26, 2009, 08:39:33 PM

Previous topic - Next topic

Malpercio

#25
i'm a little busy right now, but i'll look at it for you. i might not be as good as Snarf, but i can still take a peek.

EDIT: i took one, and Editroid wasn't reading the ROM correctly. later on today i'll play through and check, but would you mind telling me what area has the bug? Brinstar? Norfair? or where?

snarfblam

Editing items can be tricky. You have to have the password data correct or an item will come back after you die. Post a patch from Metroid(original)->your hack and I'll be glad to help.


snarfblam

I know, I used the wrong patch here. Point remains. This is my best explanation as to why you are having the problem you are having (assuming I understand correctly). It seems like you want to connect a vertical room directly to another vertical room. This is impossible without ASM hacking to change the way doors work. I spent a few minutes trying to do this once and gave up. I might try again some day because it would be nice, but it's not gonna happen any time too soon.

[spoiler][/spoiler]

[attachment deleted by admin]

snarfblam

Now, for the items that come back. You need to make sure the password data matches what you have for items.

[spoiler=Technical explanation]
The game uses "password data" to convert what items you have collected into a set of binary flags used to create the password. "Password data" is a confusing term, but that is what Editroid calls it. The password data is basically the list that specifies which items and doors are tracked by the password.

The game also has a "gotten item list" to remember which items should be removed from game-play (i.e. those you have gotten). The game tracks where you get each item, and what the item is. When you go back to a screen you got an item at, the game sees the item in the "gotten item list" and knows not to put it on the screen.

When you die the game goes through the items you've gotten (the "gotten item list") and sees which ones match password data, and encodes gotten items into the password. THIS IS IMPORTANT: if the password data does not match an item for both location and type, the item wont be found in the password data, so the game wont track that item.

When you enter a password (if you die and continue the game basically enters the password for you) the game recreates the "gotten item list" from scratch using (A) the password data that Editroid edits and (B) the actual password the user entered. If a gotten item was not trans-coded to the password because the password data did not match, it can't be put in the new "gotten item list" and the game forgets where you got the item, so the game does not know to remove it from the map.

That is why the ice and wave beams come back. They are (intentionally) not represented in the password data.

Crappy explanation, I know. Oh well.
[/spoiler]

The reason your items are coming back is because the password data for those items is absent or incorrect. Here is an illustration:


You have a missile on the map, but in the password data you specify that the screen contains an energy tank. If you got an energy tank there, the game would know to not put it back, but when you get the missile, the game wont remember that because you don't have password data for it and it wont be tracked.

The solution is to make sure your password data is correct. There are two approaches you can take:
(1) Manually check the password data entries and if they do not correspond properly to item data, correct it.
(2) If you are using Editroid 2.0, you can try using the "Generate Password Data" feature. (There is no warranty on this.)

By default, Editroid should automatically keep most password data synchronized with item data, but it's possible that there is some kind of bug in this.

[attachment deleted by admin]

Yakamaniac

#30
I was acculy doing that last night and i have all the password data fixed now all that i need fixing is the scrolling issue

EDIT: I understand what your trying to explain but i have just started hacking NES metroid so i did't know about all the room connection problem reasons. But if i change a vital screen (like most verticle screens) it would spoil the map and it would have to be twice as big as needed

snarfblam

#31
Not sure where I should put this, so imma put it here.

I've been working on an expanded Nestroid ROM, along with an updated version of Editroid that can edit said ROM. I've got what should be considered an alpha version of both. (Do I ever get anything as far as beta?)

I've done some testing myself with both the editor and ROM. I did a real quick run-through with the expanded ROM, and made a crappy little hack with the new version of Editroid, trying to use and test every feature. Although both seem reasonably stable and functional, there certainly may be bugs (especially with Editroid). If you run into any problems, please report them in this painfully empty topic. If you have a question, this is probably the best topic for that.

Here's what's new with this version of Editroid:
- Tries to assign new enemies to an available slot instead of #0
- Disabled "Large Font Scaling", which breaks the UI if you have Windows set to use large fonts.
- Updated appearance of palette editor (by request)
- Added hex values to palette editor's color selector
- You can now right-click a palette entry to select that color
- Fixed spelling of Tourian
- Fixed bug where trying to open an invalid rom and then saving the previously opened rom saves to the wrong file
- Launching a test rom fails a little more gracefully when there is no .nes file association (with a message explaining the problem)
- Shift + PageUp/PageDown too skip through screens.

Expanded Rom features: (Does not apply to un-expanded ROMs)
- Works specifically with Expando ROM (or a derived ROM)
- Add new rooms and structures, as well as delete them
- More memory available for rooms and structures
- Map data for the editor is now saved in unused ROM space instead of being tacked on to end of ROM or saving to separate file
- Expanded ROMs are probably not compatible with Metedit (MetEdit checks file size and rejects ROMs the wrong size, IIRC).

Notes:
- Can't undo the addition of or removal of rooms and structures. CREATE BACKUPS.
- While many bugs have been fixed, there are probably a couple of new bugs
- Pattern source editor is not available with an expanded ROM (it shouldn't be needed).

You can DOWNLOAD BOTH as a zip.

Edit: Try the less-broken version 2.1.

Parabox

Epic sauce, snarfy. Let's rock this NEStroid scene man.

Katelyn

I was wondering if I could add a screen. By that, I mean changing those black screens into something usable. If not, how would I move a screen to another location?

snarfblam

Click on a black screen and use the number pad (you can also use the menus: click the gear icon and select Set Level For Screen). Zero means a map location is unused, 1 is Brinstar, 2 is Norfair, so on. Then use page up and page down (or the toolbar) to pick which screen you want there.

Internally, Metroid represents the game map as a grid of screen indecies. Keep in mind that only screens from the same level should connect to each other (except where elevators are concerned). As far as the game's engine is concerned, each screen on the map grid is either unused or specifies a screen index, and it will keep on loading screens from the level you're in. The reason you need to specify a level for each map location is to let Editroid show you a screen from the correct level.

Larre

Hello. I really love the Editroid editor, but have an issue, possibly a newbie one, about Palette Swapping. I implemented a pallete swap and edited a palette in the Kraid area, but when i went to test the palette swap, I entered the corridor to the other side, and nothing happened, but when I went back through the same corridor, the swap happened. I am wondering just how to fix this? Is it the doors, or some other setting that i am missing?? Thx so much for the help.

snarfblam

The only areas that properly support palette swaps are Brinstar and Norfair. They should also be placed in a single-screen room, though it's possible that they might work in a horizontal corridor  if you place a palette swap in the screen at each end. Might even work in a vertical shaft as long as there is a palette swap in each screen with a door. I've never really tried anything but a single-screen room, though.

Malpercio

so in randomly deciding to test the above, i found a bug in Editroid 2.0 Alpha that i don't know if it's been fixed
Unhandled Exception box contents:
[spoiler]************** Exception Text **************
System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at Editroid.Level.CropScreenData(Screen screen, Int32 DataOffset, Int32 DataSize)
   at Editroid.Screen.RemoveBridge()
   at Editroid.Actions.AddOrRemoveBridge.SetState(Boolean newValue)
   at Editroid.Actions.AddOrRemoveBridge.Do()
   at Editroid.UndoRedo.EditroidUndoRedoQueue.Do(EditroidAction a)
   at Editroid.frmMain.PerformAction(EditroidAction a)
   at Editroid.frmMain.btnBridge_Click(Object sender, EventArgs e)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3615 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Editroid
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file:///Q:/gaming/Metroid%20Stuff/Game%20Editors/Editroid%202.0/Editroid.exe
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3614 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
WindowsAPI
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///Q:/gaming/Metroid%20Stuff/Game%20Editors/Editroid%202.0/WindowsAPI.DLL
----------------------------------------[/spoiler]
i was editing a room to test, and i went to add a right side door and accidentally clicked the Place Bridge Here option on the screen just to the right of the Brinstar start point on an unedited copy of NEStroid, which glitched the room horribly, as well as the next screen id-wise (17 and 18 iirc). Trying to uncheck the Bridge option generated that exception. The bug was only triggered after removing the Zoomer in that room.
i can't see what happens if the Maru Mari is moved because i can't remember how to move item locations using Editroid right now :P

snarfblam

Quote from: Malpercio on February 23, 2011, 02:11:50 AM
i found a bug in Editroid 2.0 Alpha

Editroid
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0

Well fuck me for being so absent minded. I'm guessing that this is what you saw:
[spoiler][/spoiler]

If that happened in 2.0, I would expect it to be fixed in 2.1. I've refactored all of the code that moves screen data around because there were numerous glitches like this that seemed to happen randomly. I couldn't reproduce this in 2.1 (good news).

Also,

Quote from: snarfblam on July 25, 2010, 11:29:27 AMTry the less-broken version 2.1.

Thanks for taking the time to post the error (and including stack trace).

Grimlock

I'm having some issues with the scrolling in some of the areas I've created.  I know scrolling is supposed to alternate left-right and up-down as you travel through the door ways.  My issue is that the scrolling is inconsistent.  In some situations the scrolling will be fine in an area yet be incorrect when I return after testing other rooms.  I haven't changed the type of doorways, they are all the default blue and have been reused from the original rooms (rooms just altered and reorganized from original layout).  I know some rooms go left-right to another left-right room and have the "creepy music" but I'm not sure how to set the doors to allow the modified scrolling.  What is the proper way to adjust scroll settings? 


Grimlock

#40
Here is an image of the layout:

After entering the first door all other rooms become vertical scrolling regardless of which door is used after.

I am using editroid version 2.1.b1

and emulating with JNES version 1.02.15

I get the error immediately after entering the first door and entering any second door when the game is started normally with the emulator.  When running a test through editroid.  It seems that the scrolling does work for a bit when running around from a test location but eventually has issues with inconsistent scrolling patterns.

UPDATE #1:  It appears that entering any vertical scrolling room from any horizontal scrolling room (from a test start) makes all rooms go to vertical only regardless of which door I pass through next.  The scrolling cycling is screwed up pretty good and appears to happen all over.

UPDATE #2:  What I did differently since the last time everything was ok:  I moved the start location from 03,0e to oe,09.  new rooms where added, no rooms where deleted.  an energy tank was moved to the left of the ball morph item.  Structures where edited and rooms where cycled to other types.  Thats about it other than shuffling around and adding structures to rooms.


Grimlock

A second error in my rom:


After shooting a "breakable" block it causes errors when the block attempts to respawn.  In this image you can see the block hasn't fully respawned after several seconds and my ablity to jump is messed up too (can't jump any higher than that).  The block error appears to happen with all "breakable" blocks respawning.


snarfblam

Grimlock, FYI it's preferable that you edit your existing post rather than double (or triple) posting.

As for the scrolling, this is decided by the doorways rather than the actual door bubbles. It also depends on whether or not you've applied the scrolling patch. Select "Display Physics" in the View menu and the doorways will all appear either green or yellow. In Brinstar, green doors are object type 3 and yellow doors are object type 4.

Without scrolling patch: Green is a normal door and toggles scrolling (switches from horizontal to vertical, or vice-versa). Yellow is a special door that always sets scrolling horizontal, used to connect two horizontal rooms. (There is no way to connect two vertical rooms.)

With scrolling patch: Green is a "to-vertical-room" door and sets scrolling to vertical. Use this for a room that connects to a vertical room. Yellow is a "to-horizontal-room" door, placed in a room that connects to a horizontal room. To connect two horizontal rooms, use two yellow doors. To connect two vertical rooms, use two green doors. To connect a horizontal and vertical room, use a green door in the horizontal room and a yellow door in a vertical room.

It sounds like you've applied the scrolling patch and have a bunch of green doors. If this is the case, and you want to use the original doorway behavior, click "Tools->Patches->Doorway Scrolling" and change the value of "Behavior" from "NewBehavior" to "NormalBehavior", then apply the patch.


For the crumble blocks, it is important that you not mess with the composition of the crumble block combos, meaning a crumble block must use four sequential tiles, starting with one of the following tiles: 80, 84, 88, 8C, 90, or 94. For example, a breakable block's combo could have tiles: Top-Left=84, Top-Right=85, Bottom-Left = 86, Bottom-Right=87.

Grimlock

Thanks for the detailed response.  I did in fact activate the hack in order to try and figure out what it was for.  I've been able to figure out a great deal of things without the use of a manual (since there isn't one yet).  Now that I know how to properly use it it'll be great for greater freedom in level design.

For the crumble blocks I'm going to have to redo the tiles a little but I'm glad it wasn't an issue with the rom going corrupt on me, I was worried that might have been the case.

snarfblam

Quote from: Grimlock on April 17, 2011, 02:39:50 PM
I've been able to figure out a great deal of things without the use of a manual (since there isn't one yet).
Since this question has come up a number of times, I actually wrote up a detailed explanation of how doors work. I'll probably add more topics down the road, but it's just doors for today.

Grimlock

Question 1: Regarding editing the index available to palettes

I'm curious if there is a way to alter the index of colors available for the various pallets.  I have toyed around with the advanced palette editor but don't quite understand any of its functions.  At face value it appears to do the same thing as the standard palette editor but shows additional information and allows you to more easily display the various palettes in the game.

Question 2: Regarding editing the Metroid tittle screen

Is it possible to edit the main title screen graphics and storyline text displayed in the opening of the game?  I know Editroid allows the editing of "title screen text" but it appears to be limited in scope.


Feature ideas:

Center mouse wheel cycling:
Just a simple thought I had while editing the game; it would be nice to be able to use the center mouse wheel to scroll through different types of structures when a structure is selected.  I've since figured out your keyboard short cut system for cycling to the structure you want so maybe it's not something that is needed, just thought I'd mention it.

Customizable Shortcuts:
I'm not sure how difficult something like this would be to implement but I know I would love it.  I am big on using keyboard shortcuts.

snarfblam

Quote from: Grimlock on April 30, 2011, 03:20:01 PM
I'm curious if there is a way to alter the index of colors available for the various pallets.
Not sure what you mean by this. If you want to increase the number of colors in an entry, you can find some unused data in the level's bank (there is unused music data toward the end of each bank that wont conflict with Editroid's memory allocation) and just update the pointer accordingly.

Regarding the title screen, I would recommend using a hex editor to edit tile layouts (editing the actual tiles can be done with a tile editor, of course). I can help you find the relevant data, but it should be pretty easy to find if you look at the disassembled NEStroid code on romhacking.net.

Neither of those suggestions would be too difficult. I'll take them into consideration.

Grimlock

Quote from: snarfblam on May 01, 2011, 01:33:43 PM
Quote from: Grimlock on April 30, 2011, 03:20:01 PM
I'm curious if there is a way to alter the index of colors available for the various pallets.
Not sure what you mean by this....


Here is an illustration to help with my question:


snarfblam

That's the entire NES palette at the bottom. Those are the only colors the NES is capable of displaying.

Grimlock

#49
Snarfblam, I have a couple more questions for you:

1. Bosses not there when testing:
I noticed that the Ridley and Kraid bosses are not there when testing a boss room.  Is there a setting I should be adjusting in order to test these rooms?  The final Tourian boss is there when tested (Mother brain).

2. Password Data Generator Error:
When I use the password data generator it says:
"54 itmes (Too many)"
I'm not sure how that could be, what do you recommend?  Would removing an enemy "item" correct this issue?