Sonic and Sega Retro Message Board: Chaotix Hacking (formerly Chaotix Level Editing) - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
Loading News Feed...
 

Chaotix Hacking (formerly Chaotix Level Editing) In case you haven't noticed what I'm doing to the SCHG page...

#16 User is offline Andlabs 

Posted 30 January 2010 - 10:52 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
Nailed it.

CODE
void *GetOSTAtSlot(int OSTnum)
{
    int d7;
    int *a0;

    d7 = 0xE01C[OSTnum];
    a0 = 0xE026 + OSTnum;
    if (*0xE026 == 0) // no entries in the list
        return a0;
    if (OSTnum > 0) {
        for (; d7 >= 0; d7--) {
            if (*a0 == 0)
                break;
            a0 = *a0;
        }
        if (d7 < 0) // not found
            return a0;
    } else
        while ((d7 = *a0) != 0)
            a0 = d7;
    *a0 = *E026;
    d7 = a0;
    a0 = *a0;
    *E026 = *a0;
    *a0 = 0;
    (*a0)[2] = d7;
    (*a0)[4] = 0;
    (*a0)[0x10] = unk_881768;
    (*a0)[8] = (*a0)[0xC] = (*a0)[0x20] = 0;
    return a0;
}

void InitOSTs(void)
{
    int *a0, *a1;
    int d7;

    E026 = E028 = E02A = E02C = E02E = 0;
    E030 = 0x7FFF;
    E026 = a0 = AD08;
    for (d7 = 0x3F; d7 >= 0; d7--) {
        a1 = a0[40];
        *a0 = a1;
        a0 = a1;
    }
    a0[-40] = 0; // close up the last value
    CA9E = CAA2 = E1A2 = 0;
    D01E = 0xD45E;
    E01E = 5;
    E020 = 0xF;
    E022 = E024 = 0x3F;
}

CALLS FOR A LEVEL

InitOSTs()
    E026 = AD08; all else 0
    AD08 = AD48
    AD48 = AD88
    ...
GetOSTAtSlot(6)
    E026 = AD48; E02C = AD08; all else 0
    AD08 = 0
GetOSTAtSlot(6) (repeated)
    E026 = AD88; E02C = AD08; all else 0
    AD08 = AD48
    AD48 = 0
[some time later]
GetOSTAtSlot(2)
    E026 = ADC8; E028 = AD88; E02C = AD08; all else 0
    AD08 = AD48
    AD48 = AD88
    AD88 = 0


So the OSTs are a linked list. $FFE026 is the address of the first free entry. The proper name of GetOSTAtSlot is AllocOST, since that's what it's doing. The variables $FFE028..$FFE030 are set by AllocOST only when it is told to. So now the only thing left is to determine which of these variables point to player 1, player 2, etc. and we can finally dive deeper into Chaotix.
This post has been edited by Andlabs: 30 January 2010 - 10:52 PM

#17 User is offline Andlabs 

Posted 31 January 2010 - 02:27 AM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
All right. As far as I can tell:

$FFFFE028 is initially given to the first player. Since that value needs to be overwritten, it gets copied to $FFFFE034; likewise for Player 2 and $FFFFE036.
This post has been edited by Andlabs: 31 January 2010 - 02:31 AM

#18 User is offline Andlabs 

Posted 01 February 2010 - 03:47 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
Well I give up so I'm asking the board. I think I found the routine to handle button pushes, since it uses the character traits. But I can't disassemble everything because at one point it calls a function loaded from RAM... based on addresses from a list of negative jumps — they jump BACKWARD. No matter what I do, IDA treats them as forward jumps. I've tried different addressing modes, different targets, changing the values to signed; all to no avail. Can someone help me?

CODE
ROM:008F56A6 word_8F56A6:    dc.w $FCDA            ; DATA XREF: sub_8F565E+Eo
ROM:008F56A6                                    ; TODO
ROM:008F56A8                 dc.w $FCD8
ROM:008F56AA                 dc.w $FCD6
ROM:008F56AC                 dc.w $FCD4
ROM:008F56AE                 dc.w $FCD2
ROM:008F56B0                 dc.w $FCD0
ROM:008F56B2                 dc.w $FCCE
ROM:008F56B4                 dc.w $FCCC
ROM:008F56B6                 dc.w $FCCA
ROM:008F56B8                 dc.w $FCC8
ROM:008F56BA                 dc.w $FCC6
ROM:008F56BC                 dc.w $FCC4
ROM:008F56BE                 dc.w $FCC2
ROM:008F56C0                 dc.w $FCC0
ROM:008F56C2                 dc.w $FCBE
ROM:008F56C4                 dc.w $FCBC
ROM:008F56C6                 dc.w $FCBA
ROM:008F56C8                 dc.w $FCB8
ROM:008F56CA                 dc.w $FCB6
ROM:008F56CC                 dc.w $FCB4
ROM:008F56CE                 dc.w $FCB2
ROM:008F56D0                 dc.w $FCB0
ROM:008F56D2                 dc.w $FCAE
ROM:008F56D4                 dc.w $FCAC
ROM:008F56D6                 dc.w $FCAA
ROM:008F56D8                 dc.w $FCA8
ROM:008F56DA                 dc.w $FCA6
ROM:008F56DC                 dc.w $FCA4
ROM:008F56DE                 dc.w $FCA2
ROM:008F56E0                 dc.w $FCA0
ROM:008F56E2                 dc.w $FC9E
ROM:008F56E4                 dc.w $FC9C
ROM:008F56E6                 dc.w $FC9A
ROM:008F56E8                 dc.w $FC98
ROM:008F56EA                 dc.w $FC96
ROM:008F56EC                 dc.w $FC94
ROM:008F56EE                 dc.w $FC92
ROM:008F56F0                 dc.w $FC90
ROM:008F56F2                 dc.w $FC8E
ROM:008F56F4                 dc.w $FC8C
ROM:008F56F6                 dc.w $FC8A
ROM:008F56F8                 dc.w $FC88
ROM:008F56FA                 dc.w $FC86
ROM:008F56FC                 dc.w $FC84
ROM:008F56FE                 dc.w $FC82
ROM:008F5700                 dc.w $FC80
ROM:008F5702                 dc.w $FC7E
ROM:008F5704                 dc.w $FC7C
ROM:008F5706                 dc.w $FC7A
ROM:008F5708                 dc.w $FC78
ROM:008F570A                 dc.w $FC76
ROM:008F570C                 dc.w $FC74
ROM:008F570E                 dc.w $FC72
ROM:008F5710                 dc.w $FC70
ROM:008F5712                 dc.w $FC6E
ROM:008F5714                 dc.w $FC6C
ROM:008F5716                 dc.w $FC6A
ROM:008F5718                 dc.w $FC68
ROM:008F571A                 dc.w $FC66
ROM:008F571C                 dc.w $FC64
ROM:008F571E                 dc.w $FC62
ROM:008F5720                 dc.w $FC60
ROM:008F5722                 dc.w $FC5E
ROM:008F5724                 dc.w $FC5C
ROM:008F5726                 dc.w $FC5A
ROM:008F5728                 dc.w $FC58
ROM:008F572A                 dc.w $FC56
ROM:008F572C                 dc.w $FC54
ROM:008F572E                 dc.w $FC52
ROM:008F5730                 dc.w $FC50
ROM:008F5732                 dc.w $FC4E
ROM:008F5734                 dc.w $FC4C
ROM:008F5736                 dc.w $FC4A
ROM:008F5738                 dc.w $FC48
ROM:008F573A                 dc.w $FC46
ROM:008F573C                 dc.w $FC44
ROM:008F573E                 dc.w $FC42
ROM:008F5740                 dc.w $FC40
ROM:008F5742                 dc.w $FC3E
ROM:008F5744                 dc.w $FC3C


I'm using IDA 5.5.
This post has been edited by Andlabs: 01 February 2010 - 03:48 PM

#19 User is offline Andlabs 

Posted 02 February 2010 - 07:13 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
All right, if my question can't be answered, could an IDC script do this, and how? I don't know IDC. Thanks.

#20 User is offline Andlabs 

Posted 04 February 2010 - 12:20 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
CODE
TABLE 1
OFFSET        SIZE    DESCRIPTION
$0-$1        word    Pointer to next OST in allocator chain
$2-$39        ?    ?
$3A        word    Pointer to table 2
$3B-$3F        ?    ?

TABLE 2
OFFSET        SIZE    DESCRIPTION
$0-$1        word    Pointer to next OST in allocator chain
$2-$2F        ?    ?
$30        byte    Flags
            BIT    DESCRIPTION
            0    has sheild?
            1    ?
            2    ?
            3    if 1 then shrunken, if 0 then grown
                only checked when $38 != 0
$32        word    Invincibility timer (from $4B0 to $0; $0 == no invincibility; each new box adds $4B0)
$33-$37        ?    ?
$38        word    Grow/shrink timer (from $4B0 to $0; $0 == no size change; each new like box adds $4B0;
            each unlike box sets $0 and returns to normal)
$39-$3F        ?    ?


It begins...
This post has been edited by Andlabs: 04 February 2010 - 12:21 PM

#21 User is offline Andlabs 

Posted 04 February 2010 - 06:23 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
I just put in the offsets I found based on some of Mercury's info. Thanks dude, these offsets kept showing up and I had no fucking clue what they were; now I can look even closer into this game! thumbsup.png

CODE
TABLE 1
OFFSET        SIZE    DESCRIPTION
$0-$1        word    Pointer to next OST in allocator chain
$2-$7        ?        ?
$8            word    X position
$A            ?        ?
$C            word    Y position
$E-$39        ?        ?
$3A            word    Pointer to table 2
$3B-$3F        ?        ?

TABLE 2
OFFSET        SIZE    DESCRIPTION
$0-$1        word    Pointer to next OST in allocator chain
$2-$2F        ?        ?
$30            byte    Flags
                    BIT        DESCRIPTION
                    0        has sheild?
                    1        ?
                    2        ?
                    3        if 1 then shrunken, if 0 then grown; only checked when $38 != 0
$32            word    Invincibility timer (from $4B0 to $0; $0 == no invincibility; each new box adds $4B0)
$33-$37        ?        ?
$38            word    Grow/shrink timer (from $4B0 to $0; $0 == no size change; each new like box adds $4B0; each unlike box sets $0 and returns to normal)
$39-$3F        ?        ?


I still have to look into those other offsets, and also into Thorn's data...
This post has been edited by Andlabs: 04 February 2010 - 06:30 PM

#22 User is offline Andlabs 

Posted 05 February 2010 - 03:11 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
CODE
ROM:0088B6C8; =============== S U B R O U T I N E =======================================
ROM:0088B6C8
ROM:0088B6C8
ROM:0088B6C8 MovePlayer1:                          ; CODE XREF: sub_88A0E4+7Ep
ROM:0088B6C8                                    ; sub_88A2B0+14p ...
ROM:0088B6C8                 btst    #1,$24(a6)
ROM:0088B6CE                 beq.s   loc_88B6DE
ROM:0088B6D0                 cmpi.w  #$500,$2C(a6)
ROM:0088B6D6                 bcc.s   loc_88B6DE
ROM:0088B6D8                 move.w  #$500,$2C(a6)
ROM:0088B6DE
ROM:0088B6DE loc_88B6DE:                        ; CODE XREF: MovePlayer1+6j
ROM:0088B6DE                                    ; MovePlayer1+Ej
ROM:0088B6DE                 move.l  $18(a6),d3
ROM:0088B6E2                 move.l  $1C(a6),d4
ROM:0088B6E6                 move.b  $2A(a6),d2
ROM:0088B6EA                 btst    #3,$25(a6)
ROM:0088B6F0                 beq.s   loc_88B6F6
ROM:0088B6F2                 addi.b  #-$80,d2
ROM:0088B6F6
ROM:0088B6F6 loc_88B6F6:                        ; CODE XREF: MovePlayer1+28j
ROM:0088B6F6                 jsr     sub_8F5746
ROM:0088B6FC                 move.w  $2C(a6),d2
ROM:0088B700                 beq.s   loc_88B72E
ROM:0088B702                 muls.w  d2,d0
ROM:0088B704                 muls.w  d2,d1
ROM:0088B706                 asr.l   #6,d0
ROM:0088B708                 asr.l   #6,d1
ROM:0088B70A                 add.l   d0,d3
ROM:0088B70C                 add.l   d1,d4
ROM:0088B70E                 move.l  d3,d2
ROM:0088B710                 or.l    d4,d2
ROM:0088B712                 beq.s   loc_88B72E
ROM:0088B714                 move.b  $2B(a6),d2
ROM:0088B718                 jsr     sub_8F5746
ROM:0088B71E                 move.w  $2E(a6),d2
ROM:0088B722                 muls.w  d2,d0
ROM:0088B724                 muls.w  d2,d1
ROM:0088B726                 asr.l   #6,d0
ROM:0088B728                 asr.l   #6,d1
ROM:0088B72A                 add.l   d0,d3
ROM:0088B72C                 add.l   d1,d4
ROM:0088B72E
ROM:0088B72E loc_88B72E:                        ; CODE XREF: MovePlayer1+38j
ROM:0088B72E                                    ; MovePlayer1+4Aj
ROM:0088B72E                 move.w  4(a4),d0
ROM:0088B732                 ext.l   d0
ROM:0088B734                 lsl.l   #8,d0
ROM:0088B736                 move.l  d0,d1
ROM:0088B738                 neg.l   d1
ROM:0088B73A                 tst.l   d3
ROM:0088B73C                 bpl.s   loc_88B746
ROM:0088B73E                 cmp.l   d1,d3
ROM:0088B740                 bge.s   loc_88B74C
ROM:0088B742                 move.l  d1,d3
ROM:0088B744                 bra.s   loc_88B74C
ROM:0088B746; ---------------------------------------------------------------------------
ROM:0088B746
ROM:0088B746 loc_88B746:                        ; CODE XREF: MovePlayer1+74j
ROM:0088B746                 cmp.l   d0,d3
ROM:0088B748                 ble.s   loc_88B74C
ROM:0088B74A                 move.l  d0,d3
ROM:0088B74C
ROM:0088B74C loc_88B74C:                        ; CODE XREF: MovePlayer1+78j
ROM:0088B74C                                    ; MovePlayer1+7Cj ...
ROM:0088B74C                 tst.l   d4
ROM:0088B74E                 bpl.s   loc_88B758
ROM:0088B750                 cmp.l   d1,d4
ROM:0088B752                 bge.s   loc_88B75E
ROM:0088B754                 move.l  d1,d4
ROM:0088B756                 bra.s   loc_88B75E
ROM:0088B758; ---------------------------------------------------------------------------
ROM:0088B758
ROM:0088B758 loc_88B758:                        ; CODE XREF: MovePlayer1+86j
ROM:0088B758                 cmp.l   d0,d4
ROM:0088B75A                 ble.s   loc_88B75E
ROM:0088B75C                 move.l  d0,d4
ROM:0088B75E
ROM:0088B75E loc_88B75E:                        ; CODE XREF: MovePlayer1+8Aj
ROM:0088B75E                                    ; MovePlayer1+8Ej ...
ROM:0088B75E                 add.l   d3,8(a6)
ROM:0088B762                 add.l   d4,$C(a6)
ROM:0088B766                 rts
ROM:0088B766; End of function MovePlayer1
ROM:0088B766


I'm going to try going through this and picking out the weight and speed values, etc. If someone would like to help me with this, by all means.
This post has been edited by Andlabs: 05 February 2010 - 05:01 PM

#23 User is offline Andlabs 

Posted 07 February 2010 - 02:38 AM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
CODE
ROM:00889DBC CharActions:    dc.w nullsub_24-CharActions; DATA XREF: sub_889C2E+186r
ROM:00889DBC                ; ROM:CharActionso ...
ROM:00889DBC                ; 0 = no action
ROM:00889DBE                 dc.w sub_889DF2-CharActions; 2 = standing, moving
ROM:00889DC0                 dc.w sub_88A5BE-CharActions; 4 = jumping
ROM:00889DC2                 dc.w sub_88A1E4-CharActions; 6 = rolling (normal and after spindash)
ROM:00889DC4                 dc.w sub_88A6F2-CharActions; 8 = wall jumping; double jumping (Vector)
ROM:00889DC6                 dc.w sub_88A346-CharActions; A = holding partner
ROM:00889DC8                 dc.w sub_88A77E-CharActions
ROM:00889DCA                 dc.w sub_88A83C-CharActions; E = being held
ROM:00889DCC                 dc.w sub_88A8D4-CharActions; 10 = charging spindash
ROM:00889DCE                 dc.w sub_88A976-CharActions; 12 = hurt? TODO
ROM:00889DD0                 dc.w sub_88AA0E-CharActions
ROM:00889DD2                 dc.w sub_88AAD0-CharActions
ROM:00889DD4                 dc.w sub_88AB00-CharActions
ROM:00889DD6                 dc.w sub_88AB7C-CharActions; 1A = being called
ROM:00889DD8                 dc.w $4E75; 1C = INVALID
ROM:00889DDA                 dc.w $4E75; 1E = INVALID
ROM:00889DDC                 dc.w sub_88AC22-CharActions; 20 = Mighty on wall? TODO
ROM:00889DDE                 dc.w sub_88AD1C-CharActions
ROM:00889DE0                 dc.w sub_88AD1C-CharActions; 24 = Knuckles gliding? TODO
ROM:00889DE2                 dc.w sub_88ADF8-CharActions; 26 = Knuckles climbing? TODO
ROM:00889DE4                 dc.w sub_88AFA0-CharActions; 28 = Vector on wall? TODO
ROM:00889DE6                 dc.w sub_88B10A-CharActions; 2A = Charmy flying? TODO
ROM:00889DE8                 dc.w sub_88B148-CharActions; 2C = Charmy landing? TODO
ROM:00889DEA                 dc.w sub_88B23C-CharActions
ROM:00889DEC                 dc.w sub_88B286-CharActions; 30 = Bomb exploding? TODO
ROM:00889DEE                 dc.w sub_88B2A2-CharActions; 32 = Espio wall scaling? TODO


smile.png

Note that the action is initiated by another action (including the sound effect); then the subroutine is jumped to. Offset 7 from the main OST has the value in the comments (byte).

Weird but interesting thing: instead of doing
CODE
    jsr necessarySub
    rts
each time (there are many returns in each subroutine), each of the above subroutines do
CODE
    pea necessarySub
condition_1:
    ; ...
    rts
condition_2:
    ; ...
    rts
It's unorthodox but still cool.
This post has been edited by Andlabs: 07 February 2010 - 02:45 AM

#24 User is offline Andlabs 

Posted 08 February 2010 - 06:24 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
Small break from OST to do object research.

We know the location and type of the object position tale — it's on the SCHG now. Each entry in this list is a list of object entries of the form

CODE
x position - word
y position - word
object type - word
object subtype - word


with a word $FFFF ending the list.

I also started deciphering the object list:

CODE
ROM:00891D72 ObjectActions:  dc.l sub_89F884    ; DATA XREF: DoObjectActions+24o
ROM:00891D72                                    ; 0
ROM:00891D76                 dc.l sub_89F5A6    ; 4
ROM:00891D7A                 dc.l sub_8989CC    ; 8
ROM:00891D7E                 dc.l sub_89F28E    ; 12
ROM:00891D82                 dc.l sub_893010    ; 16
ROM:00891D86                 dc.l nullsub_4        ; 20
ROM:00891D8A                 dc.l sub_89ED82    ; 24
ROM:00891D8E                 dc.l sub_89DD98    ; 28 = Amazing Arena transport UFO?
ROM:00891D92                 dc.l sub_8A69F8    ; 32
ROM:00891D96                 dc.l sub_89209E    ; 36
ROM:00891D9A                 dc.l sub_892364    ; 40
ROM:00891D9E                 dc.l sub_892606    ; 44
ROM:00891DA2                 dc.l sub_8927CC    ; 48 = big ring (to bonus stage?)
ROM:00891DA6                 dc.l sub_89DA32    ; 52 = Amazing Arena large springs
ROM:00891DAA                 dc.l sub_89DAE0    ; 56
ROM:00891DAE                 dc.l sub_89DD48    ; 60
ROM:00891DB2                 dc.l sub_89D872    ; 64
ROM:00891DB6                 dc.l sub_89D9F0    ; 68 = end of Amazing Arena transport tubes
ROM:00891DBA                 dc.l sub_89D9AE    ; 72
ROM:00891DBE                 dc.l sub_89D8FE    ; 76
ROM:00891DC2                 dc.l sub_89D778    ; 80
ROM:00891DC6                 dc.l sub_8A3BBA    ; 84 = spikes
ROM:00891DCA                 dc.l sub_8A3BBA    ; 88
ROM:00891DCE                 dc.l sub_8A3BBA    ; 92
ROM:00891DD2                 dc.l sub_8A3BBA    ; 96
ROM:00891DD6                 dc.l sub_897F96    ; 100
ROM:00891DDA                 dc.l sub_8980A8    ; 104
ROM:00891DDE                 dc.l sub_8981BA    ; 108
ROM:00891DE2                 dc.l sub_8982EA    ; 112
ROM:00891DE6                 dc.l sub_8929B8    ; 116
ROM:00891DEA                 dc.l sub_892AAC    ; 120
ROM:00891DEE                 dc.l nullsub_7        ; 124
ROM:00891DF2                 dc.l sub_892B3E    ; 128
ROM:00891DF6                 dc.l sub_898B42    ; 132
ROM:00891DFA                 dc.l sub_897E48    ; 136
ROM:00891DFE                 dc.l sub_896F9A    ; 140
ROM:00891E02                 dc.l sub_897128    ; 144
ROM:00891E06                 dc.l sub_8957D2    ; 148
ROM:00891E0A                 dc.l sub_89AC12    ; 152
ROM:00891E0E                 dc.l sub_89AD3C    ; 156
ROM:00891E12                 dc.l sub_896DBA    ; 160
ROM:00891E16                 dc.l sub_896EB2    ; 164
ROM:00891E1A                 dc.l sub_8A4358    ; 168
ROM:00891E1E                 dc.l sub_896972    ; 172
ROM:00891E22                 dc.l sub_896B36    ; 176
ROM:00891E26                 dc.l sub_896CD2    ; 180
ROM:00891E2A                 dc.l sub_898422    ; 184 = Botanic Base dissolving platform?
ROM:00891E2E                 dc.l nullsub_8        ; 188
ROM:00891E32                 dc.l nullsub_8        ; 192
ROM:00891E36                 dc.l nullsub_8        ; 196
ROM:00891E3A                 dc.l sub_8A1B44    ; 200
ROM:00891E3E                 dc.l sub_8A1D16    ; 204
ROM:00891E42                 dc.l sub_8A36E2    ; 208
ROM:00891E46                 dc.l sub_892096    ; 212
ROM:00891E4A                 dc.l sub_8A21B0    ; 216
ROM:00891E4E                 dc.l sub_892096    ; 220
ROM:00891E52                 dc.l sub_8A4094    ; 224
ROM:00891E56                 dc.l sub_892096    ; 228
ROM:00891E5A                 dc.l sub_89C69A    ; 232
ROM:00891E5E                 dc.l sub_89C8CC    ; 236
ROM:00891E62                 dc.l sub_8A9CF6    ; 240
ROM:00891E66                 dc.l sub_89A5DC    ; 244
ROM:00891E6A                 dc.l sub_89A756    ; 248
ROM:00891E6E                 dc.l sub_89A812    ; 252
ROM:00891E72                 dc.l sub_89B0C2    ; 256
ROM:00891E76                 dc.l sub_8A0834    ; 260
ROM:00891E7A                 dc.l sub_89CE94    ; 264
ROM:00891E7E                 dc.l sub_894788    ; 268 = monitor?
ROM:00891E82                 dc.l sub_8B4A68    ; 272
ROM:00891E86                 dc.l sub_8BCB82    ; 276
ROM:00891E8A                 dc.l sub_898932    ; 280 = translucent corridor to big ring for bonuss stage?
ROM:00891E8E                 dc.l sub_892096    ; 284
ROM:00891E92                 dc.l sub_899350    ; 288
ROM:00891E96                 dc.l sub_899494    ; 292
ROM:00891E9A                 dc.l sub_8994CC    ; 296
ROM:00891E9E                 dc.l sub_899DD0    ; 300
ROM:00891EA2                 dc.l sub_899F3C    ; 304
ROM:00891EA6                 dc.l sub_89BFD6    ; 308
ROM:00891EAA                 dc.l sub_89996E    ; 312
ROM:00891EAE                 dc.l sub_899CF6    ; 316
ROM:00891EB2                 dc.l sub_8984F6    ; 320 = Amazing Arena dissolving platforms?
ROM:00891EB6                 dc.l sub_898604    ; 324
ROM:00891EBA                 dc.l sub_89BC86    ; 328
ROM:00891EBE                 dc.l sub_89BD5A    ; 332
ROM:00891EC2                 dc.l sub_89BE2E    ; 336
ROM:00891EC6                 dc.l sub_89BF02    ; 340
ROM:00891ECA                 dc.l sub_8A1988    ; 344
ROM:00891ECE                 dc.l sub_89742C    ; 348
ROM:00891ED2                 dc.l sub_895014    ; 352
ROM:00891ED6                 dc.l DoSpring         ; 356 = spring
ROM:00891EDA                 dc.l sub_892096    ; 360
ROM:00891EDE                 dc.l sub_892096    ; 364
ROM:00891EE2                 dc.l sub_8A4B3E    ; 368
ROM:00891EE6                 dc.l sub_89D408    ; 372 = beginning of Amazing Arena transport tubes
ROM:00891EEA                 dc.l sub_89D05E    ; 376
ROM:00891EEE                 dc.l sub_89CAA4    ; 380
ROM:00891EF2                 dc.l sub_89CD3A    ; 384
ROM:00891EF6                 dc.l sub_89CE5A    ; 388
ROM:00891EFA                 dc.l sub_89C558    ; 392
ROM:00891EFE                 dc.l sub_89C418    ; 396
ROM:00891F02                 dc.l sub_89C4FE    ; 400
ROM:00891F06                 dc.l sub_894CA0    ; 404 = Botanic Base spiked leaf ball badnik?
ROM:00891F0A                 dc.l sub_894F88    ; 408
ROM:00891F0E                 dc.l sub_894FCE    ; 412
ROM:00891F12                 dc.l sub_8950CE    ; 416
ROM:00891F16                 dc.l nullsub_12    ; 420
ROM:00891F1A                 dc.l sub_8955B0    ; 424
ROM:00891F1E                 dc.l sub_89529C    ; 428
ROM:00891F22                 dc.l sub_8A4CD4    ; 432
ROM:00891F26                 dc.l sub_8950FA    ; 436
ROM:00891F2A                 dc.l sub_8950CE    ; 440
ROM:00891F2E                 dc.l sub_8A4E86    ; 444
ROM:00891F32                 dc.l sub_895660    ; 448
ROM:00891F36                 dc.l sub_895728    ; 452
ROM:00891F3A                 dc.l sub_890610    ; 456 = signpost
ROM:00891F3E                 dc.l sub_89A21A    ; 460
ROM:00891F42                 dc.l sub_89A3E6    ; 464
ROM:00891F46                 dc.l sub_89A472    ; 468
ROM:00891F4A                 dc.l sub_89AAAE    ; 472
ROM:00891F4E                 dc.l sub_8A41E0    ; 476
ROM:00891F52                 dc.l sub_89A9A2    ; 480
ROM:00891F56                 dc.l sub_895C7A    ; 484
ROM:00891F5A                 dc.l sub_895E1A    ; 488
ROM:00891F5E                 dc.l sub_895FC8    ; 492
ROM:00891F62                 dc.l sub_8960DC    ; 496
ROM:00891F66                 dc.l sub_896140    ; 500
ROM:00891F6A                 dc.l sub_892096    ; 504
ROM:00891F6E                 dc.l sub_892096    ; 508
ROM:00891F72                 dc.l sub_892096    ; 512
ROM:00891F76                 dc.l sub_892096    ; 516
ROM:00891F7A                 dc.l sub_892096    ; 520
ROM:00891F7E                 dc.l sub_89618A    ; 524
ROM:00891F82                 dc.l sub_892096    ; 528
ROM:00891F86                 dc.l sub_896312    ; 532
ROM:00891F8A                 dc.l sub_8963A8    ; 536
ROM:00891F8E                 dc.l sub_892096    ; 540
ROM:00891F92                 dc.l sub_89B2E4    ; 544
ROM:00891F96                 dc.l sub_8A50A0    ; 548
ROM:00891F9A                 dc.l sub_897CBA    ; 552
ROM:00891F9E                 dc.l sub_897D08    ; 556
ROM:00891FA2                 dc.l sub_897E06    ; 560
ROM:00891FA6                 dc.l sub_8A5720    ; 564
ROM:00891FAA                 dc.l sub_8A5BBA    ; 568
ROM:00891FAE                 dc.l sub_89FA9A    ; 572
ROM:00891FB2                 dc.l sub_89FB6E    ; 576
ROM:00891FB6                 dc.l sub_89FC42    ; 580
ROM:00891FBA                 dc.l sub_89FD16    ; 584
ROM:00891FBE                 dc.l sub_89F982    ; 588
ROM:00891FC2                 dc.l sub_898A66    ; 592
ROM:00891FC6                 dc.l sub_89B3F6    ; 596
ROM:00891FCA                 dc.l sub_89FDEA    ; 600
ROM:00891FCE                 dc.l sub_897E86    ; 604
ROM:00891FD2                 dc.l sub_897EBE    ; 608
ROM:00891FD6                 dc.l sub_8A3D26    ; 612
ROM:00891FDA                 dc.l sub_8A01F0    ; 616
ROM:00891FDE                 dc.l sub_8A3F1A    ; 620
ROM:00891FE2                 dc.l sub_8A6B3E    ; 624
ROM:00891FE6                 dc.l sub_8A6BD0    ; 628 = Amazing Arena subboss
ROM:00891FEA                 dc.l sub_8A4572    ; 632
ROM:00891FEE                 dc.l sub_8A4688    ; 636
ROM:00891FF2                 dc.l sub_8A04C0    ; 640
ROM:00891FF6                 dc.l sub_8A066E    ; 644 = Balru
ROM:00891FFA                 dc.l sub_8A479E    ; 648
ROM:00891FFE                 dc.l sub_8B6258    ; 652
ROM:00892002                 dc.l sub_8B6186    ; 656
ROM:00892006                 dc.l sub_8A1474    ; 660
ROM:0089200A                 dc.l sub_8A1586    ; 664
ROM:0089200E                 dc.l sub_8A1884    ; 668
ROM:00892012                 dc.l sub_892096    ; 672
ROM:00892016                 dc.l sub_892096    ; 676
ROM:0089201A                 dc.l sub_8A1E10    ; 680
ROM:0089201E                 dc.l sub_8A20E0    ; 684
ROM:00892022                 dc.l sub_8A0AC4    ; 688
ROM:00892026                 dc.l sub_8A0DB6    ; 692
ROM:0089202A                 dc.l sub_8A0E94    ; 696
ROM:0089202E                 dc.l sub_8A1084    ; 700
ROM:00892032                 dc.l sub_8A228E    ; 704
ROM:00892036                 dc.l sub_8A2690    ; 708
ROM:0089203A                 dc.l sub_8A2798    ; 712
ROM:0089203E                 dc.l sub_8A2A00    ; 716
ROM:00892042                 dc.l sub_8A2BF0    ; 720
ROM:00892046                 dc.l sub_892096    ; 724
ROM:0089204A                 dc.l sub_8A2CC8    ; 728
ROM:0089204E                 dc.l sub_8A31A2    ; 732
ROM:00892052                 dc.l sub_897660    ; 736
ROM:00892056                 dc.l sub_892096    ; 740
ROM:0089205A                 dc.l sub_892096    ; 744
ROM:0089205E                 dc.l sub_892096    ; 748
ROM:00892062                 dc.l sub_8977A4    ; 752
ROM:00892066                 dc.l sub_897AFA    ; 756
ROM:0089206A                 dc.l sub_8A3388    ; 760
ROM:0089206E                 dc.l sub_8A3414    ; 764
ROM:00892072                 dc.l sub_89E7F0    ; 768
ROM:00892076                 dc.l sub_8A3562    ; 772
ROM:0089207A                 dc.l sub_8A3904    ; 776
ROM:0089207E                 dc.l sub_892096    ; 780
ROM:00892082                 dc.l sub_892096    ; 784
ROM:00892086                 dc.l sub_8A3A64    ; 788
ROM:0089208A                 dc.l sub_892096    ; 792
ROM:0089208E                 dc.l sub_892096    ; 796
ROM:00892092                 dc.l sub_8A4A0E    ; 800


The implementation of each function reads like cuneiform until further notice.

Also the numers should go up by 4. If I made an error, please let me know.
This post has been edited by Andlabs: 08 February 2010 - 06:35 PM

#25 User is offline Andlabs 

Posted 09 February 2010 - 01:19 AM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
More objects:

CODE
ROM:00891D72 ObjectActions:  dc.l sub_89F884; DATA XREF: DoObjectActions+24o
ROM:00891D72                                ; 0
ROM:00891D76                 dc.l sub_89F5A6; 4
ROM:00891D7A                 dc.l sub_8989CC; 8 = Techno Tower Robotnik transparent hallway?
ROM:00891D7E                 dc.l sub_89F28E; 12
ROM:00891D82                 dc.l sub_893010; 16
ROM:00891D86                 dc.l nullsub_4    ; 20
ROM:00891D8A                 dc.l sub_89ED82; 24
ROM:00891D8E                 dc.l DoAATransportUFO; 28 = Amazing Arena transport UFO
ROM:00891D92                 dc.l sub_8A69F8; 32 = Techno Tower conveyor belt machine
ROM:00891D96                 dc.l sub_89209E; 36 = ring sets
ROM:00891D9A                 dc.l sub_892364; 40
ROM:00891D9E                 dc.l sub_892606; 44
ROM:00891DA2                 dc.l DoBonusStageRing; 48 = big ring to bonus stage
ROM:00891DA6                 dc.l sub_89DA32; 52 = Amazing Arena large springs
ROM:00891DAA                 dc.l sub_89DAE0; 56
ROM:00891DAE                 dc.l sub_89DD48; 60
ROM:00891DB2                 dc.l sub_89D872; 64
ROM:00891DB6                 dc.l sub_89D9F0; 68 = end of Amazing Arena transport tubes
ROM:00891DBA                 dc.l sub_89D9AE; 72
ROM:00891DBE                 dc.l sub_89D8FE; 76
ROM:00891DC2                 dc.l sub_89D778; 80
ROM:00891DC6                 dc.l sub_8A3BBA; 84 = spikes
ROM:00891DCA                 dc.l sub_8A3BBA; 88
ROM:00891DCE                 dc.l sub_8A3BBA; 92
ROM:00891DD2                 dc.l sub_8A3BBA; 96
ROM:00891DD6                 dc.l sub_897F96; 100
ROM:00891DDA                 dc.l sub_8980A8; 104
ROM:00891DDE                 dc.l sub_8981BA; 108
ROM:00891DE2                 dc.l sub_8982EA; 112 = Botanic Base (only?) button
ROM:00891DE6                 dc.l sub_8929B8; 116
ROM:00891DEA                 dc.l sub_892AAC; 120
ROM:00891DEE                 dc.l nullsub_7    ; 124
ROM:00891DF2                 dc.l sub_892B3E; 128
ROM:00891DF6                 dc.l sub_898B42; 132 = Techno Tower elevator
ROM:00891DFA                 dc.l sub_897E48; 136
ROM:00891DFE                 dc.l sub_896F9A; 140 = Techno Tower one way door?
ROM:00891E02                 dc.l sub_897128; 144
ROM:00891E06                 dc.l sub_8957D2; 148
ROM:00891E0A                 dc.l sub_89AC12; 152
ROM:00891E0E                 dc.l sub_89AD3C; 156
ROM:00891E12                 dc.l sub_896DBA; 160
ROM:00891E16                 dc.l sub_896EB2; 164
ROM:00891E1A                 dc.l sub_8A4358; 168 = Botanic Base button-activated door?
ROM:00891E1E                 dc.l sub_896972; 172
ROM:00891E22                 dc.l sub_896B36; 176
ROM:00891E26                 dc.l sub_896CD2; 180
ROM:00891E2A                 dc.l DoBBDissolvingPlatform; 184 = Botanic Base dissolving platform
ROM:00891E2E                 dc.l nullsub_8    ; 188
ROM:00891E32                 dc.l nullsub_8    ; 192
ROM:00891E36                 dc.l nullsub_8    ; 196
ROM:00891E3A                 dc.l sub_8A1B44; 200 = Kameka
ROM:00891E3E                 dc.l sub_8A1D16; 204
ROM:00891E42                 dc.l sub_8A36E2; 208
ROM:00891E46                 dc.l sub_892096; 212
ROM:00891E4A                 dc.l sub_8A21B0; 216
ROM:00891E4E                 dc.l sub_892096; 220
ROM:00891E52                 dc.l sub_8A4094; 224
ROM:00891E56                 dc.l sub_892096; 228
ROM:00891E5A                 dc.l sub_89C69A; 232 = TT Badnik 1
ROM:00891E5E                 dc.l sub_89C8CC; 236 = Carry?
ROM:00891E62                 dc.l sub_8A9CF6; 240
ROM:00891E66                 dc.l sub_89A5DC; 244
ROM:00891E6A                 dc.l sub_89A756; 248
ROM:00891E6E                 dc.l sub_89A812; 252
ROM:00891E72                 dc.l sub_89B0C2; 256
ROM:00891E76                 dc.l sub_8A0834; 260
ROM:00891E7A                 dc.l sub_89CE94; 264
ROM:00891E7E                 dc.l sub_894788; 268 = monitor?
ROM:00891E82                 dc.l sub_8B4A68; 272
ROM:00891E86                 dc.l sub_8BCB82; 276
ROM:00891E8A                 dc.l sub_898932; 280 = translucent corridor to big ring for bonuss stage?
ROM:00891E8E                 dc.l sub_892096; 284
ROM:00891E92                 dc.l sub_899350; 288
ROM:00891E96                 dc.l sub_899494; 292
ROM:00891E9A                 dc.l sub_8994CC; 296
ROM:00891E9E                 dc.l sub_899DD0; 300
ROM:00891EA2                 dc.l sub_899F3C; 304
ROM:00891EA6                 dc.l sub_89BFD6; 308
ROM:00891EAA                 dc.l sub_89996E; 312
ROM:00891EAE                 dc.l sub_899CF6; 316
ROM:00891EB2                 dc.l DoSSAATTDissolvingPlatform; 320 = Speed Slider/Amazing Arena/Techno Tower dissolving platform
ROM:00891EB6                 dc.l sub_898604; 324 = Techno Tower switch-activated dissolving platform
ROM:00891EBA                 dc.l sub_89BC86; 328
ROM:00891EBE                 dc.l sub_89BD5A; 332
ROM:00891EC2                 dc.l sub_89BE2E; 336
ROM:00891EC6                 dc.l sub_89BF02; 340
ROM:00891ECA                 dc.l sub_8A1988; 344 = Patabata
ROM:00891ECE                 dc.l sub_89742C; 348
ROM:00891ED2                 dc.l sub_895014; 352
ROM:00891ED6                 dc.l DoSpring        ; 356 = spring
ROM:00891EDA                 dc.l sub_892096; 360
ROM:00891EDE                 dc.l sub_892096; 364
ROM:00891EE2                 dc.l sub_8A4B3E; 368
ROM:00891EE6                 dc.l sub_89D408; 372 = beginning of Amazing Arena transport tubes
ROM:00891EEA                 dc.l sub_89D05E; 376
ROM:00891EEE                 dc.l sub_89CAA4; 380
ROM:00891EF2                 dc.l sub_89CD3A; 384
ROM:00891EF6                 dc.l sub_89CE5A; 388
ROM:00891EFA                 dc.l sub_89C558; 392
ROM:00891EFE                 dc.l sub_89C418; 396
ROM:00891F02                 dc.l sub_89C4FE; 400
ROM:00891F06                 dc.l sub_894CA0; 404 = Botanic Base Badnik 1
ROM:00891F0A                 dc.l sub_894F88; 408
ROM:00891F0E                 dc.l sub_894FCE; 412
ROM:00891F12                 dc.l sub_8950CE; 416
ROM:00891F16                 dc.l nullsub_12; 420
ROM:00891F1A                 dc.l sub_8955B0; 424
ROM:00891F1E                 dc.l sub_89529C; 428 = Happa
ROM:00891F22                 dc.l sub_8A4CD4; 432 = Pirani
ROM:00891F26                 dc.l sub_8950FA; 436
ROM:00891F2A                 dc.l sub_8950CE; 440
ROM:00891F2E                 dc.l sub_8A4E86; 444
ROM:00891F32                 dc.l sub_895660; 448
ROM:00891F36                 dc.l sub_895728; 452
ROM:00891F3A                 dc.l DoSignpost; 456 = signpost
ROM:00891F3E                 dc.l sub_89A21A; 460
ROM:00891F42                 dc.l sub_89A3E6; 464
ROM:00891F46                 dc.l sub_89A472; 468
ROM:00891F4A                 dc.l sub_89AAAE; 472
ROM:00891F4E                 dc.l sub_8A41E0; 476
ROM:00891F52                 dc.l sub_89A9A2; 480
ROM:00891F56                 dc.l sub_895C7A; 484 = Speed Slider spike ball
ROM:00891F5A                 dc.l sub_895E1A; 488
ROM:00891F5E                 dc.l sub_895FC8; 492
ROM:00891F62                 dc.l sub_8960DC; 496
ROM:00891F66                 dc.l sub_896140; 500
ROM:00891F6A                 dc.l sub_892096; 504
ROM:00891F6E                 dc.l sub_892096; 508
ROM:00891F72                 dc.l sub_892096; 512
ROM:00891F76                 dc.l sub_892096; 516
ROM:00891F7A                 dc.l sub_892096; 520
ROM:00891F7E                 dc.l sub_89618A; 524
ROM:00891F82                 dc.l sub_892096; 528
ROM:00891F86                 dc.l sub_896312; 532
ROM:00891F8A                 dc.l sub_8963A8; 536 = Botanic Base transport pod
ROM:00891F8E                 dc.l sub_892096; 540
ROM:00891F92                 dc.l sub_89B2E4; 544
ROM:00891F96                 dc.l sub_8A50A0; 548 = Botanic Base back room door
ROM:00891F9A                 dc.l sub_897CBA; 552 = Botanic base transport pod docks
ROM:00891F9E                 dc.l sub_897D08; 556
ROM:00891FA2                 dc.l sub_897E06; 560
ROM:00891FA6                 dc.l sub_8A5720; 564
ROM:00891FAA                 dc.l sub_8A5BBA; 568
ROM:00891FAE                 dc.l sub_89FA9A; 572
ROM:00891FB2                 dc.l sub_89FB6E; 576
ROM:00891FB6                 dc.l sub_89FC42; 580
ROM:00891FBA                 dc.l sub_89FD16; 584
ROM:00891FBE                 dc.l sub_89F982; 588
ROM:00891FC2                 dc.l sub_898A66; 592
ROM:00891FC6                 dc.l sub_89B3F6; 596
ROM:00891FCA                 dc.l sub_89FDEA; 600 = Speed Slider small elevator (with door)
ROM:00891FCE                 dc.l sub_897E86; 604
ROM:00891FD2                 dc.l sub_897EBE; 608
ROM:00891FD6                 dc.l sub_8A3D26; 612 = Speed Slider balloons
ROM:00891FDA                 dc.l sub_8A01F0; 616
ROM:00891FDE                 dc.l sub_8A3F1A; 620
ROM:00891FE2                 dc.l sub_8A6B3E; 624
ROM:00891FE6                 dc.l sub_8A6BD0; 628 = Bosses (including Amazing Arena subboss)
ROM:00891FEA                 dc.l sub_8A4572; 632
ROM:00891FEE                 dc.l sub_8A4688; 636 = Nishita
ROM:00891FF2                 dc.l sub_8A04C0; 640
ROM:00891FF6                 dc.l sub_8A066E; 644 = Balru
ROM:00891FFA                 dc.l sub_8A479E; 648
ROM:00891FFE                 dc.l sub_8B6258; 652
ROM:00892002                 dc.l sub_8B6186; 656
ROM:00892006                 dc.l sub_8A1474; 660
ROM:0089200A                 dc.l sub_8A1586; 664
ROM:0089200E                 dc.l sub_8A1884; 668
ROM:00892012                 dc.l sub_892096; 672
ROM:00892016                 dc.l sub_892096; 676
ROM:0089201A                 dc.l sub_8A1E10; 680 = Uniformer
ROM:0089201E                 dc.l sub_8A20E0; 684
ROM:00892022                 dc.l sub_8A0AC4; 688
ROM:00892026                 dc.l sub_8A0DB6; 692
ROM:0089202A                 dc.l sub_8A0E94; 696
ROM:0089202E                 dc.l sub_8A1084; 700
ROM:00892032                 dc.l sub_8A228E; 704
ROM:00892036                 dc.l sub_8A2690; 708
ROM:0089203A                 dc.l sub_8A2798; 712
ROM:0089203E                 dc.l sub_8A2A00; 716
ROM:00892042                 dc.l sub_8A2BF0; 720
ROM:00892046                 dc.l sub_892096; 724
ROM:0089204A                 dc.l sub_8A2CC8; 728
ROM:0089204E                 dc.l sub_8A31A2; 732
ROM:00892052                 dc.l sub_897660; 736
ROM:00892056                 dc.l sub_892096; 740
ROM:0089205A                 dc.l sub_892096; 744
ROM:0089205E                 dc.l sub_892096; 748
ROM:00892062                 dc.l sub_8977A4; 752
ROM:00892066                 dc.l sub_897AFA; 756
ROM:0089206A                 dc.l sub_8A3388; 760
ROM:0089206E                 dc.l sub_8A3414; 764
ROM:00892072                 dc.l sub_89E7F0; 768
ROM:00892076                 dc.l sub_8A3562; 772
ROM:0089207A                 dc.l sub_8A3904; 776
ROM:0089207E                 dc.l sub_892096; 780
ROM:00892082                 dc.l sub_892096; 784
ROM:00892086                 dc.l sub_8A3A64; 788
ROM:0089208A                 dc.l sub_892096; 792
ROM:0089208E                 dc.l sub_892096; 796
ROM:00892092                 dc.l sub_8A4A0E; 800


Still looking (and confirming); be patient.

Chaotix's ring system resembles Sonic 2's in that the ring object manages multiple rings in different arrangements.
This post has been edited by Andlabs: 09 February 2010 - 08:18 AM

#26 User is offline Andlabs 

Posted 11 February 2010 - 01:52 AM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
Two things.

1. I found all the enemies's IDs:

Syntax Highlighted Code: ASM
ROM:00891D72 ObjectActions:  dc.l sub_89F884         ; DATA XREF: DoObjectActions+24o
ROM:00891D72 ; 0
ROM:00891D76 dc.l sub_89F5A6 ; 4 = Amazing Arena clock
ROM:00891D7A dc.l sub_8989CC ; 8 = Speed Slider/Techno Tower translucent room
ROM:00891D7E dc.l sub_89F28E ; 12
ROM:00891D82 dc.l sub_893010 ; 16
ROM:00891D86 dc.l nullsub_4 ; 20
ROM:00891D8A dc.l sub_89ED82 ; 24
ROM:00891D8E dc.l sub_89DD98 ; 28 = Amazing Arena transport UFO
ROM:00891D92 dc.l sub_8A69F8 ; 32 = Techno Tower conveyor belt machine
ROM:00891D96 dc.l sub_89209E ; 36 = ring sets
ROM:00891D9A dc.l sub_892364 ; 40
ROM:00891D9E dc.l sub_892606 ; 44
ROM:00891DA2 dc.l sub_8927CC ; 48 = big ring to bonus stage
ROM:00891DA6 dc.l sub_89DA32 ; 52 = Amazing Arena large springs
ROM:00891DAA dc.l sub_89DAE0 ; 56
ROM:00891DAE dc.l sub_89DD48 ; 60
ROM:00891DB2 dc.l sub_89D872 ; 64
ROM:00891DB6 dc.l sub_89D9F0 ; 68 = end of Amazing Arena transport tubes
ROM:00891DBA dc.l sub_89D9AE ; 72
ROM:00891DBE dc.l sub_89D8FE ; 76
ROM:00891DC2 dc.l sub_89D778 ; 80
ROM:00891DC6 dc.l sub_8A3BBA ; 84 = spikes
ROM:00891DCA dc.l sub_8A3BBA ; 88
ROM:00891DCE dc.l sub_8A3BBA ; 92
ROM:00891DD2 dc.l sub_8A3BBA ; 96
ROM:00891DD6 dc.l sub_897F96 ; 100
ROM:00891DDA dc.l sub_8980A8 ; 104
ROM:00891DDE dc.l sub_8981BA ; 108
ROM:00891DE2 dc.l sub_8982EA ; 112 = Botanic Base (only?) button
ROM:00891DE6 dc.l sub_8929B8 ; 116
ROM:00891DEA dc.l sub_892AAC ; 120
ROM:00891DEE dc.l nullsub_7 ; 124
ROM:00891DF2 dc.l sub_892B3E ; 128
ROM:00891DF6 dc.l sub_898B42 ; 132 = Techno Tower elevator
ROM:00891DFA dc.l sub_897E48 ; 136
ROM:00891DFE dc.l sub_896F9A ; 140 = Techno Tower one way door?
ROM:00891E02 dc.l sub_897128 ; 144
ROM:00891E06 dc.l sub_8957D2 ; 148
ROM:00891E0A dc.l sub_89AC12 ; 152 = Isolated Island Introduction 2 player grabber thing
ROM:00891E0E dc.l sub_89AD3C ; 156 = Isolated Island dissolving platform
ROM:00891E12 dc.l sub_896DBA ; 160 = Botanic Base button-activated door
ROM:00891E16 dc.l sub_896EB2 ; 164
ROM:00891E1A dc.l sub_8A4358 ; 168 = Botanic Base Badnik 3
ROM:00891E1E dc.l sub_896972 ; 172
ROM:00891E22 dc.l sub_896B36 ; 176
ROM:00891E26 dc.l sub_896CD2 ; 180
ROM:00891E2A dc.l sub_898422 ; 184 = Botanic Base dissolving platform
ROM:00891E2E dc.l nullsub_8 ; 188
ROM:00891E32 dc.l nullsub_8 ; 192
ROM:00891E36 dc.l nullsub_8 ; 196
ROM:00891E3A dc.l sub_8A1B44 ; 200 = Kameka
ROM:00891E3E dc.l sub_8A1D16 ; 204
ROM:00891E42 dc.l sub_8A36E2 ; 208
ROM:00891E46 dc.l sub_892096 ; 212
ROM:00891E4A dc.l sub_8A21B0 ; 216
ROM:00891E4E dc.l sub_892096 ; 220
ROM:00891E52 dc.l sub_8A4094 ; 224 = Marina Madness Badnik 1
ROM:00891E56 dc.l sub_892096 ; 228
ROM:00891E5A dc.l sub_89C69A ; 232 = Techno Tower Badnik 1
ROM:00891E5E dc.l sub_89C8CC ; 236 = Carry
ROM:00891E62 dc.l sub_8A9CF6 ; 240
ROM:00891E66 dc.l sub_89A5DC ; 244 = Isolated Island player hologram switch for opening door
ROM:00891E6A dc.l sub_89A756 ; 248
ROM:00891E6E dc.l sub_89A812 ; 252 = Isolated Island partner hologram switch for opening door
ROM:00891E72 dc.l sub_89B0C2 ; 256 = Isolated Island rising platform
ROM:00891E76 dc.l sub_8A0834 ; 260
ROM:00891E7A dc.l sub_89CE94 ; 264
ROM:00891E7E dc.l sub_894788 ; 268 = monitor
ROM:00891E82 dc.l sub_8B4A68 ; 272
ROM:00891E86 dc.l sub_8BCB82 ; 276
ROM:00891E8A dc.l sub_898932 ; 280 = translucent corridor to big ring for bonuss stage?
ROM:00891E8E dc.l sub_892096 ; 284
ROM:00891E92 dc.l sub_899350 ; 288
ROM:00891E96 dc.l sub_899494 ; 292
ROM:00891E9A dc.l sub_8994CC ; 296
ROM:00891E9E dc.l sub_899DD0 ; 300
ROM:00891EA2 dc.l sub_899F3C ; 304
ROM:00891EA6 dc.l sub_89BFD6 ; 308 = Zakku
ROM:00891EAA dc.l sub_89996E ; 312
ROM:00891EAE dc.l sub_899CF6 ; 316
ROM:00891EB2 dc.l sub_8984F6 ; 320 = Speed Slider/Amazing Arena/Techno Tower dissolving platform
ROM:00891EB6 dc.l sub_898604 ; 324 = Speed Slider/Techno Tower button/switch-activated dissolving platform
ROM:00891EBA dc.l sub_89BC86 ; 328
ROM:00891EBE dc.l sub_89BD5A ; 332
ROM:00891EC2 dc.l sub_89BE2E ; 336
ROM:00891EC6 dc.l sub_89BF02 ; 340
ROM:00891ECA dc.l sub_8A1988 ; 344 = Patabata
ROM:00891ECE dc.l sub_89742C ; 348
ROM:00891ED2 dc.l sub_895014 ; 352
ROM:00891ED6 dc.l sub_89AE1C ; 356 = spring
ROM:00891EDA dc.l sub_892096 ; 360
ROM:00891EDE dc.l sub_892096 ; 364
ROM:00891EE2 dc.l sub_8A4B3E ; 368
ROM:00891EE6 dc.l sub_89D408 ; 372 = beginning of Amazing Arena transport tubes
ROM:00891EEA dc.l sub_89D05E ; 376
ROM:00891EEE dc.l sub_89CAA4 ; 380
ROM:00891EF2 dc.l sub_89CD3A ; 384
ROM:00891EF6 dc.l sub_89CE5A ; 388
ROM:00891EFA dc.l sub_89C558 ; 392
ROM:00891EFE dc.l sub_89C418 ; 396
ROM:00891F02 dc.l sub_89C4FE ; 400
ROM:00891F06 dc.l sub_894CA0 ; 404 = Botanic Base Badnik 1
ROM:00891F0A dc.l sub_894F88 ; 408
ROM:00891F0E dc.l sub_894FCE ; 412
ROM:00891F12 dc.l sub_8950CE ; 416
ROM:00891F16 dc.l nullsub_12 ; 420
ROM:00891F1A dc.l sub_8955B0 ; 424
ROM:00891F1E dc.l sub_89529C ; 428 = Happa
ROM:00891F22 dc.l sub_8A4CD4 ; 432 = Pirani
ROM:00891F26 dc.l sub_8950FA ; 436
ROM:00891F2A dc.l sub_8950CE ; 440
ROM:00891F2E dc.l sub_8A4E86 ; 444 = Marina Madness Badnik 3
ROM:00891F32 dc.l sub_895660 ; 448
ROM:00891F36 dc.l sub_895728 ; 452
ROM:00891F3A dc.l sub_890610 ; 456 = signpost
ROM:00891F3E dc.l sub_89A21A ; 460
ROM:00891F42 dc.l sub_89A3E6 ; 464
ROM:00891F46 dc.l sub_89A472 ; 468 = Isolated Island platform badnik from Tutorial 3
ROM:00891F4A dc.l sub_89AAAE ; 472 = Isolated Island door
ROM:00891F4E dc.l sub_8A41E0 ; 476 = Marina Madness Badnik 2
ROM:00891F52 dc.l sub_89A9A2 ; 480 = Isolated Island partner hologram switch for rising platform
ROM:00891F56 dc.l sub_895C7A ; 484 = Speed Slider spike ball
ROM:00891F5A dc.l sub_895E1A ; 488
ROM:00891F5E dc.l sub_895FC8 ; 492
ROM:00891F62 dc.l sub_8960DC ; 496
ROM:00891F66 dc.l sub_896140 ; 500
ROM:00891F6A dc.l sub_892096 ; 504
ROM:00891F6E dc.l sub_892096 ; 508
ROM:00891F72 dc.l sub_892096 ; 512
ROM:00891F76 dc.l sub_892096 ; 516
ROM:00891F7A dc.l sub_892096 ; 520
ROM:00891F7E dc.l sub_89618A ; 524
ROM:00891F82 dc.l sub_892096 ; 528
ROM:00891F86 dc.l sub_896312 ; 532
ROM:00891F8A dc.l sub_8963A8 ; 536 = Botanic Base transport pod
ROM:00891F8E dc.l sub_892096 ; 540
ROM:00891F92 dc.l sub_89B2E4 ; 544
ROM:00891F96 dc.l sub_8A50A0 ; 548 = Botanic Base back room door
ROM:00891F9A dc.l sub_897CBA ; 552 = Botanic base transport pod docks
ROM:00891F9E dc.l sub_897D08 ; 556
ROM:00891FA2 dc.l sub_897E06 ; 560
ROM:00891FA6 dc.l sub_8A5720 ; 564
ROM:00891FAA dc.l sub_8A5BBA ; 568
ROM:00891FAE dc.l sub_89FA9A ; 572
ROM:00891FB2 dc.l sub_89FB6E ; 576
ROM:00891FB6 dc.l sub_89FC42 ; 580
ROM:00891FBA dc.l sub_89FD16 ; 584
ROM:00891FBE dc.l sub_89F982 ; 588
ROM:00891FC2 dc.l sub_898A66 ; 592
ROM:00891FC6 dc.l sub_89B3F6 ; 596
ROM:00891FCA dc.l sub_89FDEA ; 600 = Speed Slider small elevator (with door)
ROM:00891FCE dc.l sub_897E86 ; 604
ROM:00891FD2 dc.l sub_897EBE ; 608
ROM:00891FD6 dc.l sub_8A3D26 ; 612 = Speed Slider balloons
ROM:00891FDA dc.l sub_8A01F0 ; 616 = Speed Slider bell
ROM:00891FDE dc.l sub_8A3F1A ; 620 = Speed Slider underground spring that launches you after standing above it for a few seconds
ROM:00891FE2 dc.l sub_8A6B3E ; 624 = World Entrance doorways
ROM:00891FE6 dc.l sub_8A6BD0 ; 628 = Bosses (including Amazing Arena subboss); World Entrance objects
ROM:00891FEA dc.l sub_8A4572 ; 632
ROM:00891FEE dc.l sub_8A4688 ; 636 = Nishita
ROM:00891FF2 dc.l sub_8A04C0 ; 640 = Amazing Arena Badnik 2
ROM:00891FF6 dc.l sub_8A066E ; 644 = Balru
ROM:00891FFA dc.l sub_8A479E ; 648 = Botanic Base Badnik 2
ROM:00891FFE dc.l sub_8B6258 ; 652 = Juppun
ROM:00892002 dc.l sub_8B6186 ; 656 = Amazing Arena Badnik 1
ROM:00892006 dc.l sub_8A1474 ; 660
ROM:0089200A dc.l sub_8A1586 ; 664 = Techno Tower Badnik 3
ROM:0089200E dc.l sub_8A1884 ; 668
ROM:00892012 dc.l sub_892096 ; 672
ROM:00892016 dc.l sub_892096 ; 676
ROM:0089201A dc.l sub_8A1E10 ; 680 = Uniformer
ROM:0089201E dc.l sub_8A20E0 ; 684
ROM:00892022 dc.l sub_8A0AC4 ; 688 = Techno Tower Badnik 2
ROM:00892026 dc.l sub_8A0DB6 ; 692
ROM:0089202A dc.l sub_8A0E94 ; 696
ROM:0089202E dc.l sub_8A1084 ; 700
ROM:00892032 dc.l sub_8A228E ; 704 = Gotch
ROM:00892036 dc.l sub_8A2690 ; 708
ROM:0089203A dc.l sub_8A2798 ; 712 = Dribbler
ROM:0089203E dc.l sub_8A2A00 ; 716
ROM:00892042 dc.l sub_8A2BF0 ; 720
ROM:00892046 dc.l sub_892096 ; 724
ROM:0089204A dc.l sub_8A2CC8 ; 728
ROM:0089204E dc.l sub_8A31A2 ; 732
ROM:00892052 dc.l sub_897660 ; 736
ROM:00892056 dc.l sub_892096 ; 740
ROM:0089205A dc.l sub_892096 ; 744
ROM:0089205E dc.l sub_892096 ; 748
ROM:00892062 dc.l sub_8977A4 ; 752
ROM:00892066 dc.l sub_897AFA ; 756
ROM:0089206A dc.l sub_8A3388 ; 760
ROM:0089206E dc.l sub_8A3414 ; 764
ROM:00892072 dc.l sub_89E7F0 ; 768
ROM:00892076 dc.l sub_8A3562 ; 772
ROM:0089207A dc.l sub_8A3904 ; 776
ROM:0089207E dc.l sub_892096 ; 780
ROM:00892082 dc.l sub_892096 ; 784
ROM:00892086 dc.l sub_8A3A64 ; 788 = Tutorial marker flowers
ROM:0089208A dc.l sub_892096 ; 792
ROM:0089208E dc.l sub_892096 ; 796
ROM:00892092 dc.l sub_8A4A0E ; 800


2. By request, here is what I know about how the game loads objects:

At the beginning of a level and at each iteration of the level loop, the following function is called to load up the objects within a certain extent of the current location on screen. The game destroys objects that are off screen (which is why if you scroll far in debug mode the objects disappear for a while). The repeated calls to AllocOST thus create a linked list of level objects starting at $FFFFE02C, with each first word in the $40-byte OST pointing to the next object.

Syntax Highlighted Code: ASM
ROM:008B168A ; =============== S U B R O U T I N E =======================================
ROM:008B168A
ROM:008B168A
ROM:008B168A LoadVisibleObjects: ; CODE XREF: sub_8B1660+16p
ROM:008B168A ; sub_8B167C+8p
ROM:008B168A movea.l ($FFFFE09C).w,a6
ROM:008B168E lea ($FFFFE0A2).w,a1
ROM:008B1692 moveq #0,d0
ROM:008B1694 moveq #0,d1
ROM:008B1696 move.b ($FFFFE0A0).l,d1
ROM:008B169C
ROM:008B169C loc_8B169C: ; CODE XREF: LoadVisibleObjects+80j
ROM:008B169C move.b (a1,d1.w),d2
ROM:008B16A0 cmpi.b #$FF,d2
ROM:008B16A4 beq.s locret_8B170E
ROM:008B16A6 andi.b #$F,d2
ROM:008B16AA cmpi.b #2,d2
ROM:008B16AE bne.s loc_8B1708
ROM:008B16B0 move.w d1,d4
ROM:008B16B2 lsl.w #3,d4
ROM:008B16B4 movem.w (a6,d4.w),d2-d5
ROM:008B16BA move.w d2,d0
ROM:008B16BC move.w ($FFFFE08C).w,d6
ROM:008B16C0 move.w ($FFFFE090).w,d7
ROM:008B16C4 sub.w d6,d0
ROM:008B16C6 sub.w d6,d7
ROM:008B16C8 cmp.w d0,d7
ROM:008B16CA bcs.s locret_8B170E
ROM:008B16CC move.w d3,d0
ROM:008B16CE move.w ($FFFFE08E).w,d6
ROM:008B16D2 move.w ($FFFFE092).w,d7
ROM:008B16D6 sub.w d6,d0
ROM:008B16D8 sub.w d6,d7
ROM:008B16DA cmp.w d0,d7
ROM:008B16DC bcs.s loc_8B1708
ROM:008B16DE moveq #6,d0
ROM:008B16E0 jsr AllocOST
ROM:008B16E6 bmi.s loc_8B1708
ROM:008B16E8 move.w d4,6(a0)
ROM:008B16EC move.w d2,8(a0)
ROM:008B16F0 move.w d3,$C(a0)
ROM:008B16F4 move.w d1,$24(a0)
ROM:008B16F8 move.w d5,$28(a0)
ROM:008B16FC moveq #$FFFFFFF0,d2
ROM:008B16FE and.b (a1,d1.w),d2
ROM:008B1702 addq.b #1,d2
ROM:008B1704 move.b d2,(a1,d1.w)
ROM:008B1708
ROM:008B1708 loc_8B1708: ; CODE XREF: LoadVisibleObjects+24j
ROM:008B1708 ; LoadVisibleObjects+52j ...
ROM:008B1708 addq.b #1,d1
ROM:008B170A bra.w loc_8B169C
ROM:008B170E ; ---------------------------------------------------------------------------
ROM:008B170E
ROM:008B170E locret_8B170E: ; CODE XREF: LoadVisibleObjects+1Aj
ROM:008B170E ; LoadVisibleObjects+40j
ROM:008B170E rts
ROM:008B170E ; End of function LoadVisibleObjects


Then the following function is called to execute the code for each object. The objects themselves are state machines which run a single state per level loop iteration.

Syntax Highlighted Code: ASM
ROM:00891D2A ; =============== S U B R O U T I N E =======================================
ROM:00891D2A
ROM:00891D2A
ROM:00891D2A DoObjectActions: ; CODE XREF: DoGameMode+1AD4p
ROM:00891D2A ; sub_8B192A+14Ep ...
ROM:00891D2A clr.b ($FFFFFEC3).l
ROM:00891D30 lea ($FFFFE02C).w,a6
ROM:00891D34
ROM:00891D34 loc_891D34: ; CODE XREF: DoObjectActions+2Ej
ROM:00891D34 move.w 0(a6),d0
ROM:00891D38 bne.s loc_891D46
ROM:00891D3A move.b ($FFFFFEC3).l,($FFFFFEC2).l
ROM:00891D44 rts
ROM:00891D46 ; ---------------------------------------------------------------------------
ROM:00891D46
ROM:00891D46 loc_891D46: ; CODE XREF: DoObjectActions+Ej
ROM:00891D46 movea.w d0,a6
ROM:00891D48 moveq #0,d0
ROM:00891D4A move.w 6(a6),d0
ROM:00891D4E lea ObjectActions,a0
ROM:00891D52 adda.w d0,a0
ROM:00891D54 movea.l (a0),a0
ROM:00891D56 jsr (a0)
ROM:00891D58 bra.s loc_891D34
ROM:00891D58 ; End of function DoObjectActions

This post has been edited by Andlabs: 11 February 2010 - 01:54 AM

#27 User is offline Andlabs 

Posted 13 February 2010 - 11:28 PM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
After examining all the objects that the game loads, I now have a near final object list:

Syntax Highlighted Code: ASM
ROM:00891D72 ObjectActions:  dc.l sub_89F884         ; DATA XREF: DoObjectActions+24o
ROM:00891D72 ; 0
ROM:00891D76 dc.l sub_89F5A6 ; 4
ROM:00891D7A dc.l sub_8989CC ; 8 = Speed Slider/Techno Tower translucent room
ROM:00891D7E dc.l sub_89F28E ; 12
ROM:00891D82 dc.l sub_893010 ; 16
ROM:00891D86 dc.l nullsub_4 ; 20
ROM:00891D8A dc.l sub_89ED82 ; 24
ROM:00891D8E dc.l sub_89DD98 ; 28 = Amazing Arena transport UFO
ROM:00891D92 dc.l sub_8A69F8 ; 32 = Techno Tower conveyor belt machine
ROM:00891D96 dc.l sub_89209E ; 36 = ring sets
ROM:00891D9A dc.l sub_892364 ; 40
ROM:00891D9E dc.l sub_892606 ; 44
ROM:00891DA2 dc.l sub_8927CC ; 48 = big ring to bonus stage
ROM:00891DA6 dc.l sub_89DA32 ; 52 = Amazing Arena large springs
ROM:00891DAA dc.l sub_89DAE0 ; 56
ROM:00891DAE dc.l sub_89DD48 ; 60
ROM:00891DB2 dc.l sub_89D872 ; 64
ROM:00891DB6 dc.l sub_89D9F0 ; 68 = end of Amazing Arena transport pipes
ROM:00891DBA dc.l sub_89D9AE ; 72
ROM:00891DBE dc.l sub_89D8FE ; 76
ROM:00891DC2 dc.l sub_89D778 ; 80 = beginning of Amazing Arena transport pipes
ROM:00891DC6 dc.l sub_8A3BBA ; 84 = spikes facing up
ROM:00891DCA dc.l sub_8A3BBA ; 88 = spikes facing down
ROM:00891DCE dc.l sub_8A3BBA ; 92 = spikes facing right
ROM:00891DD2 dc.l sub_8A3BBA ; 96 = spikes facing left
ROM:00891DD6 dc.l sub_897F96 ; 100
ROM:00891DDA dc.l sub_8980A8 ; 104
ROM:00891DDE dc.l sub_8981BA ; 108 = Botanic Base (only?) button
ROM:00891DE2 dc.l sub_8982EA ; 112 = Botanic Base (only?) button
ROM:00891DE6 dc.l sub_8929B8 ; 116
ROM:00891DEA dc.l sub_892AAC ; 120
ROM:00891DEE dc.l nullsub_7 ; 124
ROM:00891DF2 dc.l sub_892B3E ; 128
ROM:00891DF6 dc.l sub_898B42 ; 132 = Techno Tower elevator
ROM:00891DFA dc.l sub_897E48 ; 136
ROM:00891DFE dc.l sub_896F9A ; 140 = Techno Tower one way door pointing right
ROM:00891E02 dc.l sub_897128 ; 144 = Techno Tower one way door pointing left
ROM:00891E06 dc.l sub_8957D2 ; 148
ROM:00891E0A dc.l sub_89AC12 ; 152 = Isolated Island player grabber
ROM:00891E0E dc.l sub_89AD3C ; 156 = Isolated Island dissolving platform
ROM:00891E12 dc.l sub_896DBA ; 160 = Botanic Base button-activated door
ROM:00891E16 dc.l sub_896EB2 ; 164
ROM:00891E1A dc.l sub_8A4358 ; 168 = Botanic Base Badnik 3
ROM:00891E1E dc.l sub_896972 ; 172 = Botanic Base 2 auto-opening two way door
ROM:00891E22 dc.l sub_896B36 ; 176 = Botanic Base 1 auto-opening two way door
ROM:00891E26 dc.l sub_896CD2 ; 180
ROM:00891E2A dc.l sub_898422 ; 184 = Botanic Base dissolving platform
ROM:00891E2E dc.l nullsub_8 ; 188
ROM:00891E32 dc.l nullsub_8 ; 192
ROM:00891E36 dc.l nullsub_8 ; 196
ROM:00891E3A dc.l sub_8A1B44 ; 200 = Kameka
ROM:00891E3E dc.l sub_8A1D16 ; 204
ROM:00891E42 dc.l sub_8A36E2 ; 208
ROM:00891E46 dc.l sub_892096 ; 212
ROM:00891E4A dc.l sub_8A21B0 ; 216 = Techno Tower shrinking/growing platforms
ROM:00891E4E dc.l sub_892096 ; 220
ROM:00891E52 dc.l sub_8A4094 ; 224 = Marina Madness Badnik 1
ROM:00891E56 dc.l sub_892096 ; 228
ROM:00891E5A dc.l sub_89C69A ; 232 = Techno Tower Badnik 1
ROM:00891E5E dc.l sub_89C8CC ; 236 = Carry
ROM:00891E62 dc.l sub_8A9CF6 ; 240
ROM:00891E66 dc.l sub_89A5DC ; 244 = Isolated Island player hologram switch for opening door
ROM:00891E6A dc.l sub_89A756 ; 248
ROM:00891E6E dc.l sub_89A812 ; 252 = Isolated Island partner hologram switch for opening door
ROM:00891E72 dc.l sub_89B0C2 ; 256 = Isolated Island rising platform
ROM:00891E76 dc.l sub_8A0834 ; 260 = Botanic Base door that collapses into a platform
ROM:00891E7A dc.l sub_89CE94 ; 264
ROM:00891E7E dc.l sub_894788 ; 268 = monitor
ROM:00891E82 dc.l sub_8B4A68 ; 272
ROM:00891E86 dc.l sub_8BCB82 ; 276
ROM:00891E8A dc.l sub_898932 ; 280 = translucent corridor to big ring for bonuss stage?
ROM:00891E8E dc.l sub_892096 ; 284
ROM:00891E92 dc.l sub_899350 ; 288 = Techno Tower hoop-like player holder
ROM:00891E96 dc.l sub_899494 ; 292
ROM:00891E9A dc.l sub_8994CC ; 296 = Techno Tower transporting drill
ROM:00891E9E dc.l sub_899DD0 ; 300
ROM:00891EA2 dc.l sub_899F3C ; 304 = Techno Tower large floating platforms propelled by fans
ROM:00891EA6 dc.l sub_89BFD6 ; 308 = Zakku
ROM:00891EAA dc.l sub_89996E ; 312 = Techno Tower claw
ROM:00891EAE dc.l sub_899CF6 ; 316
ROM:00891EB2 dc.l sub_8984F6 ; 320 = Speed Slider/Amazing Arena/Techno Tower dissolving platform
ROM:00891EB6 dc.l sub_898604 ; 324 = Speed Slider/Techno Tower button/switch-activated dissolving platform
ROM:00891EBA dc.l sub_89BC86 ; 328
ROM:00891EBE dc.l sub_89BD5A ; 332
ROM:00891EC2 dc.l sub_89BE2E ; 336
ROM:00891EC6 dc.l sub_89BF02 ; 340
ROM:00891ECA dc.l sub_8A1988 ; 344 = Patabata
ROM:00891ECE dc.l sub_89742C ; 348 = Marina Madness button-activated door
ROM:00891ED2 dc.l sub_895014 ; 352
ROM:00891ED6 dc.l sub_89AE1C ; 356 = spring
ROM:00891EDA dc.l sub_892096 ; 360
ROM:00891EDE dc.l sub_892096 ; 364
ROM:00891EE2 dc.l sub_8A4B3E ; 368 = spring that always points up
ROM:00891EE6 dc.l sub_89D408 ; 372 = suction for Amazing Arena transport pipes
ROM:00891EEA dc.l sub_89D05E ; 376 = top of Speed Slider one way door
ROM:00891EEE dc.l sub_89CAA4 ; 380
ROM:00891EF2 dc.l sub_89CD3A ; 384
ROM:00891EF6 dc.l sub_89CE5A ; 388
ROM:00891EFA dc.l sub_89C558 ; 392
ROM:00891EFE dc.l sub_89C418 ; 396
ROM:00891F02 dc.l sub_89C4FE ; 400
ROM:00891F06 dc.l sub_894CA0 ; 404 = Botanic Base Badnik 1
ROM:00891F0A dc.l sub_894F88 ; 408
ROM:00891F0E dc.l sub_894FCE ; 412
ROM:00891F12 dc.l sub_8950CE ; 416
ROM:00891F16 dc.l nullsub_12 ; 420
ROM:00891F1A dc.l sub_8955B0 ; 424
ROM:00891F1E dc.l sub_89529C ; 428 = Happa
ROM:00891F22 dc.l sub_8A4CD4 ; 432 = Pirani
ROM:00891F26 dc.l sub_8950FA ; 436
ROM:00891F2A dc.l sub_8950CE ; 440
ROM:00891F2E dc.l sub_8A4E86 ; 444 = Marina Madness Badnik 3
ROM:00891F32 dc.l sub_895660 ; 448
ROM:00891F36 dc.l sub_895728 ; 452
ROM:00891F3A dc.l sub_890610 ; 456 = signpost
ROM:00891F3E dc.l sub_89A21A ; 460 = Techno Tower giant spring
ROM:00891F42 dc.l sub_89A3E6 ; 464
ROM:00891F46 dc.l sub_89A472 ; 468 = Isolated Island platform badnik from Tutorial 3
ROM:00891F4A dc.l sub_89AAAE ; 472 = Isolated Island door
ROM:00891F4E dc.l sub_8A41E0 ; 476 = Marina Madness Badnik 2
ROM:00891F52 dc.l sub_89A9A2 ; 480 = Isolated Island partner hologram switch for rising platform
ROM:00891F56 dc.l sub_895C7A ; 484 = Speed Slider spike ball
ROM:00891F5A dc.l sub_895E1A ; 488
ROM:00891F5E dc.l sub_895FC8 ; 492
ROM:00891F62 dc.l sub_8960DC ; 496
ROM:00891F66 dc.l sub_896140 ; 500
ROM:00891F6A dc.l sub_892096 ; 504
ROM:00891F6E dc.l sub_892096 ; 508
ROM:00891F72 dc.l sub_892096 ; 512
ROM:00891F76 dc.l sub_892096 ; 516
ROM:00891F7A dc.l sub_892096 ; 520
ROM:00891F7E dc.l sub_89618A ; 524
ROM:00891F82 dc.l sub_892096 ; 528
ROM:00891F86 dc.l sub_896312 ; 532
ROM:00891F8A dc.l sub_8963A8 ; 536 = Botanic Base transport pod
ROM:00891F8E dc.l sub_892096 ; 540
ROM:00891F92 dc.l sub_89B2E4 ; 544 = invisible top-solid object for Marina Madness ferry decks for anchored ferries
ROM:00891F96 dc.l sub_8A50A0 ; 548 = Botanic Base back room door
ROM:00891F9A dc.l sub_897CBA ; 552 = Botanic base transport pod docks
ROM:00891F9E dc.l sub_897D08 ; 556
ROM:00891FA2 dc.l sub_897E06 ; 560
ROM:00891FA6 dc.l sub_8A5720 ; 564 = button that moves the Marina Madness ferry
ROM:00891FAA dc.l sub_8A5BBA ; 568
ROM:00891FAE dc.l sub_89FA9A ; 572
ROM:00891FB2 dc.l sub_89FB6E ; 576
ROM:00891FB6 dc.l sub_89FC42 ; 580
ROM:00891FBA dc.l sub_89FD16 ; 584
ROM:00891FBE dc.l sub_89F982 ; 588
ROM:00891FC2 dc.l sub_898A66 ; 592
ROM:00891FC6 dc.l sub_89B3F6 ; 596 = invisible top-solid object for Marina Madness ferry decks for transport ferries
ROM:00891FCA dc.l sub_89FDEA ; 600 = Speed Slider small elevator (with door)
ROM:00891FCE dc.l sub_897E86 ; 604
ROM:00891FD2 dc.l sub_897EBE ; 608
ROM:00891FD6 dc.l sub_8A3D26 ; 612 = Speed Slider balloons
ROM:00891FDA dc.l sub_8A01F0 ; 616 = Speed Slider bell
ROM:00891FDE dc.l sub_8A3F1A ; 620 = Speed Slider underground spring that launches you after standing above it for a few seconds
ROM:00891FE2 dc.l sub_8A6B3E ; 624 = World Entrance doorways
ROM:00891FE6 dc.l sub_8A6BD0 ; 628 = Bosses (including Amazing Arena subboss); World Entrance objects
ROM:00891FEA dc.l sub_8A4572 ; 632 = wall-climbing Nishita
ROM:00891FEE dc.l sub_8A4688 ; 636 = ceiling-scaling Nishita
ROM:00891FF2 dc.l sub_8A04C0 ; 640 = Amazing Arena Badnik 2
ROM:00891FF6 dc.l sub_8A066E ; 644 = Balru
ROM:00891FFA dc.l sub_8A479E ; 648 = Botanic Base Badnik 2
ROM:00891FFE dc.l sub_8B6258 ; 652 = Juppun
ROM:00892002 dc.l sub_8B6186 ; 656 = Amazing Arena Badnik 1
ROM:00892006 dc.l sub_8A1474 ; 660 = electrified Happa
ROM:0089200A dc.l sub_8A1586 ; 664 = Techno Tower Badnik 3
ROM:0089200E dc.l sub_8A1884 ; 668
ROM:00892012 dc.l sub_892096 ; 672
ROM:00892016 dc.l sub_892096 ; 676
ROM:0089201A dc.l sub_8A1E10 ; 680 = Uniformer
ROM:0089201E dc.l sub_8A20E0 ; 684
ROM:00892022 dc.l sub_8A0AC4 ; 688 = Techno Tower Badnik 2
ROM:00892026 dc.l sub_8A0DB6 ; 692
ROM:0089202A dc.l sub_8A0E94 ; 696
ROM:0089202E dc.l sub_8A1084 ; 700
ROM:00892032 dc.l sub_8A228E ; 704 = Gotch
ROM:00892036 dc.l sub_8A2690 ; 708
ROM:0089203A dc.l sub_8A2798 ; 712 = Dribbler
ROM:0089203E dc.l sub_8A2A00 ; 716
ROM:00892042 dc.l sub_8A2BF0 ; 720
ROM:00892046 dc.l sub_892096 ; 724
ROM:0089204A dc.l sub_8A2CC8 ; 728 = Speed Slider one way door
ROM:0089204E dc.l sub_8A31A2 ; 732 = Speed Slider small through-the-wall transport bowl
ROM:00892052 dc.l sub_897660 ; 736 = Botanic Base (3?) button-activated one way door
ROM:00892056 dc.l sub_892096 ; 740
ROM:0089205A dc.l sub_892096 ; 744
ROM:0089205E dc.l sub_892096 ; 748
ROM:00892062 dc.l sub_8977A4 ; 752 = Amazing Arena button-activated door
ROM:00892066 dc.l sub_897AFA ; 756 = Amazing Arena double-size button-activated door
ROM:0089206A dc.l sub_8A3388 ; 760
ROM:0089206E dc.l sub_8A3414 ; 764
ROM:00892072 dc.l sub_89E7F0 ; 768
ROM:00892076 dc.l sub_8A3562 ; 772
ROM:0089207A dc.l sub_8A3904 ; 776 = spring that always points down (it possibly affects collision in other objects in Tutorial 1?)
ROM:0089207E dc.l sub_892096 ; 780
ROM:00892082 dc.l sub_892096 ; 784
ROM:00892086 dc.l sub_8A3A64 ; 788 = Tutorial marker flowers
ROM:0089208A dc.l sub_892096 ; 792
ROM:0089208E dc.l sub_892096 ; 796
ROM:00892092 dc.l sub_8A4A0E ; 800


A lot of these objects are never loaded directly or initially; they might transform into these objects or spawn these objects but for that I have no idea.

Here are the few objects I can't identify:

CODE
; type (subtype) at level x,y of the first time it is seen
4 (0) at Amazing Arena 1 Morning 1857,2732
12 (0) at Amazing Arena 1 Morning 1744,4044
116 (8) at Tutorial 1 Morning 6033,1808
120 (0) at Tutorial 1 Morning 5265,1624
360 (2048) at Speed Slider 2 Morning 4480,568
528 (0) at Botanic Base 4 Morning 841,1619


Objects 4 and 12 are the clock objects. My problem is that while object 12 is where you go to turn on the lights, object 4 is the one that turns on the lights, and vice versa for the clocks that open faraway doors.

The rest are invisible.

I have no idea about 116 or 120: they seem to do stuff, but I don't know exactly what, and replacing the function with a simple rts has no effect.

Objects 360 and 528 both point to the routine

Syntax Highlighted Code: ASM
ROM:00892096 ; =============== S U B R O U T I N E =======================================
ROM:00892096
ROM:00892096
ROM:00892096 sub_892096: ; DATA XREF: ROM:00891E46o
ROM:00892096 ; ROM:00891E4Eo ...
ROM:00892096 andi.w #~$80,4(a6)
ROM:0089209C rts
ROM:0089209C ; End of function sub_892096


I have absolutely no idea what the andi operation is doing in this case, and getting rid of that instruction seems to have no effect.

So there you have it.
This post has been edited by Andlabs: 13 February 2010 - 11:29 PM

#28 User is offline jman2050 

Posted 14 February 2010 - 12:15 AM

  • Teh Sonik Haker
  • Posts: 614
  • Joined: 10-December 05
  • Wiki edits:4
I'm following this with some interest, so keep it up. As for that last function at 892096, it's obviously disabling something (though I wonder why it doesn't just use bset), so I wouldn't worry about its exact function until you understand more of how the object tables work.

Also, for posterity's sake, how DO you do the negative offsets correctly? I had a similar problem when disassembling something else and never did figure out how to fix it.

#29 User is offline Andlabs 

Posted 14 February 2010 - 12:17 AM

  • 「いっきまーす」
  • Posts: 2068
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
QUOTE (jman2050 @ Feb 14 2010, 12:15 AM)
Also, for posterity's sake, how DO you do the negative offsets correctly? I had a similar problem when disassembling something else and never did figure out how to fix it.

I never figured it out. Eventually I just used Jump to Address and an arithmetic expression. Turns out it jumps to a collision layer manipulation routine.

On an unfair note, IDA Pro does seem to allow reverse offset jumping on other processor architectures, though I'm not entirely sure.
This post has been edited by Andlabs: 14 February 2010 - 12:18 AM

#30 User is offline JJ-Fox 

Posted 14 February 2010 - 01:00 AM

  • :|
  • Posts: 202
  • Joined: 17-August 05
  • Gender:Male
  • Location:Indiana
  • Wiki edits:17
I am also very interested in this research.

Could you, by chance, look into subroutines relating to character sprites and animations? I'd love to be able to implement a fully functioning Tails including hand/ring and tails objects.

  • 10 Pages +
  • 1
  • 2
  • 3
  • 4
  • Last ►
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users