|
|
Sonic 2 Prototypes: Lost Data
"Hey guys, let's make a bunch of steampunk artwork and jam it in the ROM on the offchance that we may use it later!"
"What good will that do?"
"Gives us something to do, and something for the guys who buy this at a vastly overinflated price in fifteen years' time to chew on!"
"Awesome. Who's in charge of putting the cryptic source code and symbol table in there?"
"That's Mike. He's kinda under the weather at the moment, don't talk to him."
Left over uncompiled code
Beta-E Debug/Edit Mode Code
CODE nolist
include "equ.lib"
include "macro.lib"
list
xref colichgpat
xref ringpat,itempat,butapat,kanipat,hachipat,togepat
xref fishpat,fish2pat,mogurapat,shimapat2,jyamapat
xref musipat,sjumppat,kamerepat,arumapat,kagebpat,ballpat
xref firepat,fblockpat,signalpat,bobinpat,yoganpat,yogan2pat
xref usapat,yadopat,boxpat,bryukapat,daipat,break2pat,yogancpat
xref batpat,z5daipat,dai2pat,switch2pat,z4daipat
xref elevpat,pedalpat,steppat,funpat,sisoopat,hassyapat
xref brobopat,unipat,yaripat,udaipat,dai3pat,kazaripat,kassyapat
xref awapat,mizupat,boupat,benpat,fetamapat,mawarupat,hagurumapat
xref patapat,yukafpat,nokopat,dai4pat,doorpat,yukaepat,fire6pat
xref elepat,yukaipat,scolipat,imopat,savepat,bigringpat,btenpat
xref actionsub,actwkchk,frameout,playpat,dualmodesub
xref flicpat,usagipat,pengpat,azarpat,fbutapat,niwapat,risupat
xref kaitenpat,prodaipat,buranko0dpat
xref frntlitpat,gempat,wfallpat,pltfrmpat
xref takipat,banepat,dai00pat
xref redzpat,bfishpat,seahorsepat,horsepat
xref stegopat,wasppat,gatorpat,bbatpat,octpat,wfish2pat,snailpat
xdef edit
;------------------------------------------------------------------------------
edit:
moveq #0,d0
move.b editmode,d0
move.w edit_move_tbl(pc,d0.w),d1
jmp edit_move_tbl(pc,d1.w)
edit_move_tbl:
dc.w editinit-edit_move_tbl
dc.w editmove-edit_move_tbl
editinit:
addq.b #word,editmode
move.w scralim_up,editstack
move.w scralim_n_down,editstack2
move.w #$0000,scralim_up
move.w #$0720,scralim_n_down
andi.w #$07ff,playerwk+yposi
andi.w #$07ff,scra_v_posit
andi.w #$03ff,scrb_v_posit
move.b #0,patno(a0)
move.b #0,mstno(a0)
cmpi.b #spgamemd,gmmode
bne.b .jump0
* move.b #7-1,stageno
* move.w #$000,rotspd
* move.w #$000,rotdir
moveq #7-1,d0
bra.b .jump1
.jump0:
moveq #0,d0
move.b stageno,d0
.jump1:
lea edittbl,a2
add.w d0,d0
adda.w (a2,d0.w),a2
move.w (a2)+,d6
cmp.b editno,d6
bhi.b .jump
move.b #0,editno
.jump:
bsr.w editpatchg
move.b #12,edittimer
move.b #1,edittimer+1
editmove:
moveq #7-1,d0
cmpi.b #spgamemd,gmmode
beq.b .jump
moveq #0,d0
move.b stageno,d0
.jump:
lea edittbl,a2
add.w d0,d0
adda.w (a2,d0.w),a2
move.w (a2)+,d6
bsr.w editwalk
* bsr.w dirsprset
jmp actionsub
editwalk:
moveq #0,d4
move.w #1,d1
move.b swdata1+1,d4
andi.w #$0f,d4
bne.b .jump0
move.b swdata1,d0
andi.w #$0f,d0
bne.b .jump
move.b #12,edittimer
move.b #$0f,edittimer+1
bra.w .lend
.jump:
subq.b #1,edittimer
bne.b .jump1
move.b #1,edittimer
addq.b #1,edittimer+1
* cmpi.b #255,edittimer+1
bne.b .jump0
move.b #255,edittimer+1
.jump0:
move.b swdata1,d4
.jump1:
moveq #0,d1
move.b edittimer+1,d1
addq.w #1,d1
swap d1
asr.l #4,d1
move.l yposi(a0),d2
move.l xposi(a0),d3
btst.l #0,d4 *swdata+0
beq.b .jump2
sub.l d1,d2 *yposi
bcc.b .jump2
moveq #0,d2
.jump2:
btst.l #1,d4 *swdata+0
beq.b .jump3
add.l d1,d2 *yposi
cmpi.l #$7ff0000,d2
bcs.b .jump3
move.l #$7ff0000,d2
.jump3:
btst.l #2,d4 *swdata+0
beq.b .jump4
sub.l d1,d3 *xposi
bcc.b .jump4
moveq #0,d3
.jump4:
btst.l #3,d4 *swdata+0
beq.b .jump5
add.l d1,d3 *xposi
.jump5:
move.l d2,yposi(a0)
move.l d3,xposi(a0)
.lend:
btst.b #6,swdata1+0
beq.b .jump7
btst.b #5,swdata1+1 * c button check
beq.b .jump77
subq.b #1,editno
bcc.b .jump6
add.b d6,editno
bra.b .jump6
.jump77:
btst.b #6,swdata1+1
beq.b .jump7
addq.b #1,editno
cmp.b editno,d6
bhi.b .jump6
move.b #0,editno
.jump6:
bra.w editpatchg
.jump7:
btst.b #5,swdata1+1 * c button check
beq.b .jump8
jsr actwkchk
bne.b .worknai ;z=0:ok z=1:no
move.w xposi(a0),xposi(a1)
move.w yposi(a0),yposi(a1)
move.b patbase(a0),actno(a1)
move.b actflg(a0),actflg(a1)
move.b actflg(a0),cddat(a1)
andi.b #$7f,cddat(a1)
moveq #0,d0
move.b editno,d0
lsl.w #3,d0
move.b 4(a2,d0.w),userflag(a1)
rts
.worknai:
.jump8:
btst.b #4,swdata1+1 * b button check
beq.b .jump9
moveq #0,d0
move.w d0,editmode
move.l #playpat,playerwk+patbase
move.w #$0780,playerwk+sproffset
tst.w dualmode ; dual mode check
beq.b .end
move.w #$0780/2,playerwk+sproffset
.end:
move.b d0,playerwk+mstno
move.w d0,xposi+2(a0)
move.w d0,yposi+2(a0)
move.w editstack,scralim_up
move.w editstack2,scralim_n_down
cmpi.b #spgamemd,gmmode
bne.b .jump9
* clr.w rotdir
* move.w #$040,rotspd
* move.l #playpat,playerwk+patbase
* move.w #$0780,playerwk+sproffset
move.b #02,playerwk+mstno
bset.b #cd_ball,playerwk+cddat
bset.b #cd_jump,playerwk+cddat
.jump9:
rts
editpatchg:
moveq #0,d0
move.b editno,d0
lsl.w #3,d0
move.l 0(a2,d0.w),patbase(a0)
move.w 6(a2,d0.w),sproffset(a0)
move.b 5(a2,d0.w),patno(a0)
* move.b 4(a2,d0.w),userflag(a0)
bsr.w dualmodesub
rts
dcblw macro \1,\2,\3,\4,\5
dc.l (\1)*$1000000+(\2)
dc.w (\4)+(\5)*$100
dc.w (\3)
endm
edittbl:
dc.w edit1tbl-edittbl
dc.w edit2tbl-edittbl
dc.w edit3tbl-edittbl
dc.w edit4tbl-edittbl
dc.w edit5tbl-edittbl
dc.w edit6tbl-edittbl
dc.w edit7tbl-edittbl
edit1tbl:
dc.w 14
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw kani_act,kanipat,$0400,0,$00 ;3:
dcblw hachi_act,hachipat,$0444,0,$00 ;4:
dcblw fish_act,fishpat,$0470,0,$00 ;5:
dcblw toge_act,togepat,$04a0,0,$00 ;6:
dcblw shima_act,shimapat2,$4000,0,$00 ;7:
dcblw jyama_act,jyamapat,$66c0,0,$00 ;8:
dcblw musi_act,musipat,$04e0,0,$00 ;9:
dcblw sjump_act,sjumppat,$04a8,0,$00 ;10:
dcblw kamere_act,kamerepat,$249b,0,$00 ;11:
dcblw kageb_act,kagebpat,$434c,0,$00 ;12:
dcblw save_act,savepat,$26bc,0,$01 ;13:
dcblw colichg_act,colichgpat,$26bc,0,$00 ;14:
edit2tbl:
edit3tbl:
;zone0d
dc.w 07
dcblw ring_act,ringpat,$26bc,0,$00 ;01:
dcblw item_act,itempat,$0680,0,$00 ;02:
dcblw sjump_act,sjumppat,$04a8,0,$00 ;03:
dcblw colichg_act,colichgpat,$07bc,0,$00 ;04:
dcblw kaiten_act,kaitenpat,$e000,0,$00 ;05:
dcblw prodai_act,prodaipat,$e418,0,$00 ;06:
dcblw buranko_act,buranko0dpat,$2418,0,$08 ;07:
edit4tbl:
;zone00
dc.w 18
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw save_act,savepat,$047c,0,$01 ;3:
dcblw colichg_act,colichgpat,$26bc,0,$00 ;6:
dcblw taki_act,takipat,$23ae,0,$00 ;7:
dcblw taki_act,takipat,$23ae,3,$02 ;7:
dcblw shima_act,dai00pat,$4000,0,$01 ;8:
dcblw shima_act,dai00pat,$4000,1,$0a ;8:
dcblw toge_act,togepat,$2434,0,$00 ;10:
dcblw sisoo_act,sisoopat,$03ce,0,$00 ;9:
dcblw sjump_act,banepat,$045c,0,$80 ;3: banev
dcblw sjump_act,banepat,$0470,3,$90 ;3: baneh
dcblw sjump_act,banepat,$045c,6,$a0 ;3: banevr
dcblw sjump_act,banepat,$043c,7,$30 ;3: bane45
dcblw sjump_act,banepat,$043c,10,$40 ;3: bane45r
dcblw wasp_act,wasppat,$03e6,0,$00 ;25 "" ""
dcblw snail_act,snailpat,$0402,0,$00 ;25 "" ""
dcblw wfish2_act,wfish2pat,$041c,0,$00 ;21 "" ""
dcblw redz_act,redzpat,$0500,0,$00 ;20: will change
dcblw bfish_act,bfishpat,$2530,0,$00 ;21 "" ""
dcblw seahorse_act,horsepat,$2570,0,$00 ;22 "" ""
dcblw skyhorse_act,horsepat,$2570,0,$00 ;23 "" ""
dcblw stego_act,stegopat,$23c4,0,$00 ;24 "" ""
dcblw wasp_act,wasppat,$032c,0,$00 ;25 "" ""
dcblw gator_act,gatorpat,$2300,0,$00 ;26 "" ""
dcblw bbat_act,bbatpat,$2350,0,$00 ;27 "" ""
dcblw oct_act,octpat,$238a,0,$00 ;28 "" ""
edit5tbl:
edit6tbl:
edit7tbl:
;zone08
dc.w 15
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw bgspr_act,frntlitpat,$e485,3,$21 ;3:
dcblw wfall_act,wfallpat,$e415,4,$04 ;4:
dcblw break_act,pltfrmpat,$4475,0,$00 ;5:
dcblw colichg_act,colichgpat,$26bc,0,$00 ;6:
dcblw redz_act,redzpat,$0500,0,$00 ;20: will change
dcblw bfish_act,bfishpat,$2530,0,$00 ;21 "" ""
dcblw seahorse_act,horsepat,$2570,0,$00 ;22 "" ""
dcblw skyhorse_act,horsepat,$2570,0,$00 ;23 "" ""
dcblw stego_act,stegopat,$23c4,0,$00 ;24 "" ""
dcblw wasp_act,wasppat,$032c,0,$00 ;25 "" ""
dcblw gator_act,gatorpat,$2300,0,$00 ;26 "" ""
dcblw bbat_act,bbatpat,$2350,0,$00 ;27 "" ""
dcblw oct_act,octpat,$238a,0,$00 ;28 "" ""
;------------------------------------------------------------------------------
align
;------------------------------------------------------------------------------
end
edit2tbl:
dc.w 25
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw sjump_act,sjumppat,$0523,0,$00 ;3:
dcblw fish2_act,fish2pat,$2486,0,$08 ;4:
dcblw mogura_act,mogurapat,$84a6,2,$00 ;5:
dcblw yari_act,yaripat,$03cc,0,$00 ;6:
dcblw yari_act,yaripat,$03cc,3,$02 ;7:
dcblw box_act,boxpat,$43de,0,$00 ;8:
dcblw switch2_act,switch2pat,$0513,0,$00 ;9:
dcblw toge_act,togepat,$051b,0,$00 ;10:
dcblw dai_act,udaipat,$43bc,0,$04 ;11:
dcblw dai3_act,dai3pat,$43e6,0,$01 ;12:
dcblw dai3_act,dai3pat,$43e6,1,$13 ;13:
dcblw dai3_act,dai3pat,$43e6,0,$05 ;14:
dcblw kazari_act,kazaripat,$443e,0,$00 ;15:
dcblw dai3_act,dai3pat,$43e6,2,$27 ;16:
dcblw dai3_act,dai3pat,$43e6,3,$30 ;17:
dcblw kassya_act,kassyapat,$03f6,0,$7f ;18:
dcblw uni_act,unipat,$0467,0,$00 ;19:
dcblw awa_act,awapat,$8348,19,$84 ;20:
dcblw mizu_act,mizupat,$c259,2,$02 ;21:
dcblw mizu_act,mizupat,$c259,9,$09 ;22:
dcblw bou_act,boupat,$43de,0,$00 ;23:
dcblw ben_act,benpat,$4328,0,$02 ;24:
dcblw save_act,savepat,$26bc,0,$01 ;25:
* dcblw dai4_act,dai4pat,$41f0,4,$80 ;25:
edit3tbl:
dc.w 18
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw hachi_act,hachipat,$0444,0,$00 ;3:
dcblw toge_act,togepat,$051b,0,$00 ;4:
dcblw sjump_act,sjumppat,$0523,0,$00 ;5:
dcblw mfire_act,firepat,$0345,0,$00 ;6:
dcblw fblock_act,fblockpat,$4000,0,$00 ;7:
dcblw myogan_act,yoganpat,$63a8,0,$00 ;8:
dcblw yogan2_act,yogan2pat,$63a8,0,$00 ;9:
dcblw box_act,boxpat,$42b8,0,$00 ;10:
dcblw yado_act,yadopat,$247b,0,$00 ;11:
dcblw bryuka_act,bryukapat,$42b8,0,$00 ;12:
dcblw dai_act,daipat,$02b8,0,$00 ;13:
dcblw break2_act,break2pat,$62b8,0,$00 ;14:
dcblw yoganc_act,yogancpat,$8680,0,$00 ;15:
dcblw bat_act,batpat,$04b8,0,$00 ;16:
dcblw imo_act,imopat,$24ff,0,$00 ;17:
dcblw save_act,savepat,$26bc,0,$01 ;18:
edit4tbl:
dc.w 15
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw elev_act,elevpat,$4000,0,$00 ;3:
dcblw break2_act,break2pat,$44e0,2,$00 ;4:
dcblw shima_act,z4daipat,$4000,0,$00 ;5:
dcblw pedal_act,pedalpat,$4000,0,$00 ;6:
dcblw step_act,steppat,$4000,0,$00 ;7:
dcblw fun_act,funpat,$43a0,0,$00 ;8:
dcblw sisoo_act,sisoopat,$0374,0,$00 ;9:
dcblw sjump_act,sjumppat,$0523,0,$00 ;10:
dcblw mfire_act,firepat,$0480,0,$00 ;11:
dcblw bgspr_act,hassyapat,$44d8,0,$00 ;12:
dcblw brobo_act,brobopat,$0400,0,$00 ;13:
dcblw uni_act,unipat,$2429,0,$00 ;14:
dcblw save_act,savepat,$26bc,0,$01 ;15:
edit5tbl:
dc.w 15
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw toge_act,togepat,$051b,0,$00 ;3:
dcblw sjump_act,sjumppat,$0523,0,$00 ;4:
dcblw aruma_act,arumapat,$04b8,0,$00 ;5:
dcblw signal_act,signalpat,$0000,0,$00 ;6:
dcblw bobin_act,bobinpat,$0380,0,$00 ;7:
dcblw kani_act,kanipat,$0400,0,$00 ;8:
dcblw hachi_act,hachipat,$0444,0,$00 ;9:
dcblw yado_act,yadopat,$247b,0,$00 ;10:
dcblw shima_act,z5daipat,$4000,0,$00 ;11:
dcblw dai2_act,dai2pat,$4000,0,$00 ;12:
dcblw switch2_act,switch2pat,$0513,0,$00 ;13:
dcblw imo_act,imopat,$24ff,0,$00 ;14:
dcblw save_act,savepat,$26bc,0,$01 ;15:
edit6tbl:
dc.w 29
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw item_act,itempat,$0680,0,$00 ;2:
dcblw brobo_act,brobopat,$0400,0,$00 ;3:
dcblw uni_act,unipat,$0429,0,$00 ;4:
dcblw imo_act,imopat,$22b0,0,$00 ;5:
dcblw buranko_act,fetamapat,$4391,2,$07 ;6:
dcblw haguruma_act,hagurumapat,$c344,00,$e0 ;7:
dcblw dai_act,daipat,$22c0,2,$28 ;8:
dcblw switch2_act,switch2pat,$0513,0,$00 ;9:
dcblw pata_act,patapat,$4492,0,$03 ;10:
dcblw pata_act,yukafpat,$04df,0,$83 ;11:
dcblw noko_act,nokopat,$43b5,0,$02 ;12:
dcblw break2_act,break2pat,$43f5,0,$00 ;13:
dcblw dai_act,daipat,$4460,3,$39 ;14:
dcblw dai4_act,dai4pat,$22c0,0,$00 ;15:
dcblw door_act,doorpat,$42e8,0,$00 ;16:
dcblw dai4_act,dai4pat,$22c0,1,$13 ;17:
dcblw noko_act,nokopat,$43b5,0,$01 ;18:
dcblw dai4_act,dai4pat,$22c0,1,$24 ;19:
dcblw noko_act,nokopat,$43b5,2,$04 ;20:
dcblw dai4_act,dai4pat,$22c0,1,$34 ;21:
dcblw yukae_act,yukaepat,$44c3,0,$00 ;22:
dcblw fire6_act,fire6pat,$83d9,0,$64 ;23:
dcblw fire6_act,fire6pat,$83d9,11,$64 ;24:
dcblw ele_act,elepat,$047e,0,$04 ;25:
dcblw yukai_act,yukaipat,$42f0,0,$00 ;26:
dcblw scoli_act,scolipat,$8680,0,$11 ;27:
dcblw buta_act,butapat,$2302,0,$04 ;28:
dcblw save_act,savepat,$26bc,0,$01 ;29:
* dcblw ring_act,playpat,$0780,50,$00 ;28:
* dcblw usa_act,usapat,$0448,0,$00 ;5:
* dcblw mawaru_act,mawarupat,$4348,16,$00 ;7:
edit7tbl:
dc.w 02 *13
dcblw ring_act,ringpat,$26bc,0,$00 ;1:
dcblw ring_act,ringpat,$26bc,8,$00 ;2:
* dcblw bobin_act,bobinpat,$0380,0,$00 ;2:
* dcblw usagi_act,flicpat,$05a0,0,$0a ;3
* dcblw usagi_act,flicpat,$05a0,0,$0b ;4
* dcblw usagi_act,flicpat,$05a0,0,$0c ;5
* dcblw usagi_act,usagipat,$0553,0,$0d ;6
* dcblw usagi_act,usagipat,$0553,0,$0e ;7
* dcblw usagi_act,pengpat,$0573,0,$0f ;8
* dcblw usagi_act,pengpat,$0573,0,$10 ;9
* dcblw usagi_act,azarpat,$0585,0,$11 ;10
* dcblw usagi_act,fbutapat,$0593,0,$12 ;11
* dcblw usagi_act,niwapat,$0565,0,$13 ;12
* dcblw usagi_act,risupat,$05b3,0,$14 ;13
This uncompiled raw code was found inside the Beta-E prototype. How did it get there? Well, the area the code is in is initialized, but hasn't been explicitly given a value of any kind. As a result, the area of memory wasn't altered and what shows through is whatever was left in that area of memory from the assembler's workings - in this case uncompiled code.
Because the code is commented, we can be confident the game was indeed written in assembly language. However not an awful lot other than that can be gathered, because it is such a small section of assembly.
Beta-M Compressed ARZ 128x128 block mappings
CODE
This data, found inside Beta-M, is uncompiled mappings for the 16x16 blocks for Aquatic Ruin Zone's layout. The data itself is very close to the actual ARZ mappings inside the rom, so it was probably only from a slightly earlier build.
The Kanji text along the top translates into "Before compression $8000 After compression $2c00 Compression ratio 34.4% Cell number 1024".
Lost Sprites
| Topic and sprites | Beta-E Location | Beta-M Location | Description |
Unused Dust
Nemesis Compressed
|
$A59C0
|
Not in this build
|
There's nothing obvious we can link this to.
|
|
| |
Machinery
Uncompressed
|
$27498
|
Not in this build
|
Shown here with the Chemical Plant palette (image courtesy of Mistergambit), we can see some Metropolis Zone-esque machinery, and what looks like an alternative water surface. Perhaps this was some Chemical Plant concept background art?
This appears to have been overritten with OOZ graphics in the Beta.
|
|
| |
Left over map
Uncompressed but in unusual format
|
$1C324
|
Not in this build
|
This is most likely a left over from another game tested on the same cartridge, as shown to be possible with the Chiki Chiki boys data found in the Sonic 2 Beta-M below.
|
|
| |
Hill Top Zone fireball
Nemesis Compressed
|
$A4368
|
$739C6
|
In Sonic 2 Final, this sprite is used for the Hill Top Zone boss. The Beta-M version of the sprite has an extra frame, showing this art was worked on between builds, and in Beta-M it's placeable in debug mode and functions just like in Sonic 2 final.
|
|
| |
Hidden Palace Zone early backdrop tile
Uncompressed
|
$27098
|
$2B06A
|
This tile has been linked with the following HPZ mockup:
This tile is normally shown with the white palette, but when given the correct Hidden Palace Zone palette line, it matches up the tile in this concept art picture perfectly. It's also worth noting that in the rom it is arranged unusually; 2 blocks of 16 tiles arranged 4x4, going along from left to right and top to bottom.
|
White palette :: HPZ palette
|
| |
Burning Log
Nemesis Compressed
|
$A44A0
|
$7436C
|
To call this a burning log may seem a little strange, since a comparison with the log bridges in Emerald Hill Zone would suggest that this is far too small, however every Palette line in the Sonic 2 Beta, when applied to this sprite, have a dark center.
|
|
| |
Pirhana
Nemesis Compressed
|
$A835A
|
$7B4EA
|
This sprite is unused in both prototypes, and we have no screenshots or concept art which suggest what it could be used for.
|
|
| |
Bubbler's Mother (Blinky in Nemesis' guide)
Nemesis Compressed
|
$A8F36
|
$7C0C6
|
Concept art sketches suggest that this enemy was originally intended for Chemical Plant Zone (section coming soon!)
|
|
| |
Bubbler
Nemesis Compressed
|
$A9162
|
$7C2F2
|
Concept art sketches suggest that this enemy was also originally intended for Chemical Plant Zone (section coming soon!)
|
|
| |
Crocobot, Crocodile, Alligator
Nemesis Compressed
|
$A6F8A
|
$7A11A
|
Although completely inaccessable in the Sonic 2 beta, the crocobot is infact placeable in Hidden Palace Zone in the Beta-E prototype, however the sprites do not load correctly. This does show however that the Crocobot was intended for Hidden Palace, and the fact the greens are reversed could perhaps shed some light on changes that were made to Hidden Palace during it's development.
|
|
| |
Bouncer, Crawl, Sandcrab
Nemesis Compressed
|
$A9580
|
$7C710
|
What may seem to be a Beta version of the Casino night zone bouncer, to me it seems more likely to be the "Banper" referred to in the concept art sketches. Firstly beacuse Casino night wasn't even in the game at this point, and secondly the first two frames of animation show that it was probably planned to emerge from the gound.
|
|
| |
Trycerobot, Rhinobot
Nemesis Compressed
|
$A7B88
|
$7AD18
|
Featured in the famous Hidden Palace mockup shown above, the Trycerobot remains somewhat of an enigma. With the Hidden Palace Zone palette applied it is all green, which appears to be incorrect given the mockup.
|
|
| |
OOZ Seahorse
Nemesis Compressed
|
$A8852 Obj51
|
$7B9E2
|
The seahorses shoot oil balls at Sonic when approached, and the object code can be found by disassembling either rom. They are even placable (though garbled) in the Beta-E prototype in Hidden Palace.
;----------------------------------------------------
; Object 51 - unused Skyhorse badnik from HPZ
;----------------------------------------------------
Obj51: ; DATA XREF: ROM:Obj_Indexo
moveq #0,d0
move.b $24(a0),d0
move.w off_16532(pc,d0.w),d1
jmp off_16532(pc,d1.w)
|
|
| |
OOZ Octopus
Nemesis Compressed
|
$A7868 Obj4A
|
$7A9F8
|
Although this uses the same sprites as in the final (and is pink like in the final despite the image), this Octopus behaves differently due to different object code within the ROM. When it sees Sonic, it fires a glowing bullet and then flies horizontally away.
;----------------------------------------------------
; Object 4A - Octopus badnik
;----------------------------------------------------
Obj4A: ; DATA XREF: ROM:Obj_Indexo
moveq #0,d0
move.b $24(a0),d0
move.w Obj4A_Index(pc,d0.w),d1
jmp Obj4A_Index(pc,d1.w)
|
|
| |
Lamppost, Checkpoint
Nemesis Compressed
|
$A6A96
|
$79278
|
Although placeable in several zones with debug in both prototype roms, it isn't part of the level layout in either of them.
|
|
| |
Ball
Nemesis Compressed
|
$A8CA0
|
$7BE30
|
This ball seems to match up with the concept art (section coming soon!)
|
|
| |
Drill, Rotating screw
Uncompressed
|
Not in this build
|
$2A86A
|
Located near the Hidden Palace Alpha background, this drill appears nowhere in the game, and isn't in any concept shots. It appears to take the place of some random unused art in the Beta-E build:
|

|
| |
Lost CPZ Boss, Splattered Robotnik
Nemesis Compressed
|
$AA24A
|
$7D3DA
|
This interesting version of the CPZ boss seems to suggest they were originally planning to have this as the defeated robotnik animation. Note that the CPZ boss does not appear in either prototype, however the fact it is in the Beta-E prototype suggests that this boss had been on the drawing board for some time, even if no code had been made for it.
|
|
| |
|