What kind of command did the Sega use to identify what items correspond to the bit number? Some details of the weapons (Name, inventory picture, ammo count, damage, armor piercing ability, etc) are all defined in specific addresses in the ROM. Each item has about two full ROM addresses dedicated to it. So somewhere in the code it has to say "these two ROM addresses correspond to gun 1, these two to gun 2, etc.
First off, I'm assuming you mean byte, not bit. Have you tried searching the ROM for the content of RAM at that address? It could be that the data's being directly read from ROM. The surest way to find out where the weapon data is coming from and how it's put into memory is to either get a code trace or to set a write breakpoint on the memory address being read in you emulator of choice. In this case, that would be whatever address is at A0 + 0x87 (I'm assuming the offset is in hex).
Second question would be how to I read the branch command? Where is it telling the game to go look for additional directions above? I do not understand what 0x0000002a or 0x00000127 means.
I would recommend reading up on the instruction set of the 68k so you can better understand the instructions. This site is a pretty convenient reference: http://68k.hax.com
. For the instruction in question, see this page
I know you cannot just insert directions into the ROM because it would throw the address off. But a good portion of the ROM is not used in the addresses that the SEGA developer manual says is dedicated to game info. I was hoping to change the branch location to an unused part of the rom and then I could insert a few more iterations of compare bit to x and branch if equal and then bring it all back around. Would this possibly be a solution?
Unfortunately with branches, you're limited where you can jump to and I can almost guarantee the code you'll want to run will be out of range of a branch. You might have to move this branch block to your code and change it to use jumps instead. The quick and dirty way to change code flow is to overwrite some of the code with a jump to the code you want to execute, move the code you overwrote to the beginning of your code block, run your code, then jump back into the code to resume normal execution.