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