Golden Axe: The Revenge of Death Adder
Golden Axe: The Revenge of Death Adder |
---|
Developer: Sega AM1[1] This game has uncompiled source code. |
To do: Regional Differences (e.g. US version requires the player to go through all paths to beat the game) |
Golden Axe: The Revenge of Death Adder is the 1992 arcade sequel to the original Golden Axe, completely unrelated to the earlier released Genesis sequel Golden Axe II. Set several years after the events of the original game, four warriors (including a giant accompanied by an aged Gilius Thunderhead) join forces to save the world once again from the newly resurrected Death Adder. Because it ran on the advanced System 32 board, a Genesis port was out of the question and the game was unfortunately never ported to any of the later home consoles.
Uncompiled Code
Found in epr-14468-02.u3.
END Assembly Complete, 00000 error(s) found
:[ix+2] mov byte ptr ds1:[iy],dl add ix,4 dec cw bnz INITLP RET INIT ENDP ;------------------------------------------------------------------------------ ; V25 read/write check ;------------------------------------------------------------------------------ RW22 PROC _RW22: mov ch,byte ptr ds1:[ix+1] cmp ch,20h ; V25 r/w start ? bne _RW22 mov bw,8 ; counter offset (0008h) mov dh,byte ptr ds1:[ix+6h] ; add data mov dl,byte ptr ds1:[ix+7h] ; write start data LP_22: call AD_SET mov byte ptr ds1:[iy],dl ; RAM data write mov cl,byte ptr ds1:[iy] ; RAM data read cmp cl,dl bnz R22_NG add dl,dh inc bw cmp bw,7f0h ;stack area (10h) keep bnz LP_22 mov ch,22h ; RAM OK data set call SET_ON RET R22_NG: mov ch,2ah ; RAM NG data set call SET_ON RET RW22 ENDP ;------------------------------------------------------------------------------ ; V25 read / V60 write check ;------------------------------------------------------------------------------ RW26 PROC _RW26: mov ch,byte ptr ds1:[ix+1] cmp ch,4fh ; V60 write end ? bne _RW26 mov bw,8 ; counter offset (0008h) mov dh,byte ptr ds1:[ix+6h] ; add data mov dl,byte ptr ds1:[ix+7h] ; write start data LP_26: call AD_SET mov cl,byte ptr ds1:[iy] ; RAM data read cmp cl,dl bnz R26_NG add dl,dh inc bw cmp bw,7f0h bnz LP_26 mov ch,44h ; RAM OK data set call SET_ON RET R26_NG:
000020000FC :100400001F9D00 D07F00083518009D0000F2FB :10041000D89D0010F2C0FB000035310135E50035F4 :10042000B900AFFE9D00 D89D00FFF2C0D809D0 :100430000044360010053C8354029E4E158AC604C3 :100440002C38F2C39E836C01FDFD2038F7D90800DB :100450009E8374069E8354073511019E4E159E831C :100460000D3DCA380F70D6DB53FBF00738EAAD22DA :1004700035EC00C3AD2A35E600C39E836C01FDFD5B :100480004F38F7D908009E8374069E83540735DBE6 :10049000009E830D3DCA380F70D6DB53FBF0073842 :1004A000EDAD4435B900C3AD4A35B300C39E836C8E 4B00001FDFD5038F7D908009E837 E839491 :1004C000EF079E4E540735A3009E4E1570D6DB53A2 :1004D000FBF00738F1AD5F358500C34436F4044CBA :1004E0000000D8100083149E4E158AC6018AC701E9 :0404F0002C38F2C3EF :1004F4000A00C50011001100180018001F00C600F2 :1005040044361D054C8000D8300083149E4E158A55 :10051400C6018AC7012C38F2C377616B65207570F8 :100524002120474F4C44454E20415845205468658E :1005340020526576656E6765206F66204465617438 :10054400682D416464657221204C0000D80004BB0E :10055400009E4E158AC7012C38F7C39E4E6C019E
R6000 - stack overflow R6003 - integer divide by 0 R6009 - not enough space for environment run-time error R6002 - floating point not loaded R6001 - null pointer assignment
PC98EGC BGI PC98GRCGBGI SANS CHR TRIP CHR STARTUP ARC MCALC C
------------------------------------------------------------------------ ;000h~3ffh write buff ;080h~0afh (startup function work) ;400h~7ffh read buff ;------------------------------------------------------------------------------ ; start up function ;------------------------------------------------------------------------------ START_FUNC PROC _ST_FU: ldea ix,MESS_ST mov iy,080h ;start function write buff mov cw,16*3 ;loop count loop_st: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_st RET ;0123456789abcdef MESS_ST db 'wake up! GOLDEN ' ;16 byte 1 group db 'AXE The Revenge ' ;16 byte 1 group db 'of Death-Adder! ' ;16 byte 1 group START_FUNC ENDP ;------------------------------------------------------------------------------ ; work ram clr ;------------------------------------------------------------------------------ WORK_RAM_CLR PROC _WO_RA: mov iy,0000h ;work ram write adr. mov cw,0400h ;loop count mov dl,0000h loop_wc: mov byte ptr ds1:[iy],dl add iy,1 dec cw bnz loop_wc RET WORK_RAM_CLR ENDP ;------------------------------------------------------------------------------ ; RAM check result set routine ;------------------------------------------------------------------------------ SET_ON PROC _SET_ON: mov byte ptr ds1:[ix+1],ch ; check result set mov cl,byte ptr ds1:[ix+1] ; result set ok ? cmp ch,cl bnz _SET_ON RET SET_ON ENDP ;------------------------------------------------------------------------------ ; V25 address chenge & set routine ix : 0 ; aw : chenge address ; bw : address counter ;------------------------------------------------------------------------------ AD_SET PROC AST_LP: mov byte ptr ds1:[ix+2],bl ; lower address set (10002h) mov byte ptr ds1:[ix+3],bh ; upper address set (10004h) mov cl,byte ptr ds1:[ix+2] ; lower set ok ? mov ch,byte ptr ds1:[ix+3] ; upper set ok ? cmp bw,cw bnz AST_LP mov iy,bw RET AD_SET ENDP RMCK ENDS ;------------------------------------------------------------------------------ ; data table ;------------------------------------------------------------------------------ RMCK SEGMENT org 1000h ;xxf01=00 --pm0 ;xxf02=00 --pmc0 ;xxf09=00 --pm1 ;xxf0a=08 --pmc1 ;xxf11=00 --pm2 ;xxf12=00 --pmc2 ;xxfe8=00 --wtc ;xxfe9=00 --??? ;xxfeb=00 --prc ITDT dw 0f01h,0,0f02h,0,0f09h,0,0f0ah,8,0f11h,0,0f12h,0 dw 0fe8h,1001h,0fe9h,0,0febh,4ch RMCK ENDS ;------------------------------------------------------------------------------ ; reset vecter ;------------------------------------------------------------------------------ RMCK SEGMENT org 0fff0h br FAR PTR START RMCK ENDS END RMCK ENDS ;------------------------------------------------------------------------------ ; data table ;------------------------------------------------------------------------------ RMCK SEGMENT org 1000h
;xxf01=00 ' ;16 byte 1 group 202020202020 0756 20202020202020202020 345 db ' ' ;16 byte 1 group 202020202020 0766 20202020202020202020 346 db ' ' ;16 byte 1 group 202020202020 0776 20202020202020202020 347 db ' ' ;16 byte 1 group 202020202020 348 349 WRITE_EVENT2 ENDP 350 uPD70320 Assembler V3.10 SEC 01 Sep 92 12:30:49 PAGE 8 LOC OBJ LINE SOURCE 0786 351 WRITE_EVENT3 PROC 352 0786 BF0404 353 mov iy,404h ;player0 id 0789 BA0000 354 mov dw,0 078C 268A15 355 mov dl,byte ptr ds1:[iy] ;v60 mainmode*16 read 078F 80FAFF 356 cmp dl,-1 0792 741A 357 be exit_ev3 0794 8D36AF07 358 ldea ix,MESS_EV3 0798 03F2 359 add ix,dw 079A BF4000 360 mov iy,40h ;id name buff 079D B91000 361 mov cw,16 ;loop count 07A0 362 loop_ev3: 07A0 8A14 363 mov dl,byte ptr ds0:[ix] 07A2 268815 364 mov byte ptr ds1:[iy],dl 07A5 83C601 365 add ix,1 07A8 83C701 366 add iy,1 07AB 49 367 dec cw 07AC 75F2 368 bnz loop_ev3 07AE 369 exit_ev3: 07AE C3 370 RET 371 372 ;0123456789abcdef 373 07AF 73696E62617420202020 374 MESS_EV3 db 'sinbat ' ;16 byte 1 group 202020202020 07BF 72616D61796120202020 375 db 'ramaya ' ;16 byte 1 group 202020202020 07CF 676F6C646F7220202020 376 db 'goldor ' ;16 byte 1 group 202020202020 07DF 64617461202020202020 377 db 'data ' ;16 byte 1 group 202020202020 07EF 20202020202020202020 378 db ' ' ;16 byte 1 group 202020202020 07FF 20202020202020202020 379 db ' ' ;16 byte 1 group 202020202020 080F 20202020202020202020 380 db ' ' ;16 byte 1 group 202020202020 081F 20202020202020202020 381 db ' ' ;16 byte 1 group 202020202020 382 383 WRITE_EVENT3 ENDP 384 385 386 387 388 ;------------------------------------------------------------------------------ 389 ; start up function 390 ;------------------------------------------------------------------------------ 391 082F 392 START_FUNC PROC 393 082F 394 _ST_FU: 082F 8D364808 395 ldea ix,MESS_ST 0833 BF8000 396 mov iy,080h ;start function write buff 0836 B93000 397 mov cw,16*3 ;loop count 0839 398 loop_st: uPD70320 Assembler V3.10 SEC 01 Sep 92 12:30:49 PAGE 9 LOC OBJ LINE SOURCE 0839 8A14 399 mov dl,byte ptr ds0:[ix] 083B 268815 400 mov byte ptr ds1:[iy],dl 083E 83C601 401 add ix,1 0841 83C701 402 add iy,1 0844 49 403 dec cw 0845 75F2 404 bnz loop_st 0847 C3 405 RET 406 407 ;0123456789abcdef 408 0848 77616B65207570212047 409 MESS_ST db 'wake up! GOLDEN ' ;16 byte 1 group 4F4C44454E20 0858 41584520546865205265 410 db 'AXE The Revenge ' ;16 byte 1 group 76656E676520 0868 6F662044656174682D41 411 db 'of Death-Adder! ' ;16 byte 1 group 646465722120 412 413 START_FUNC ENDP 414 415 416 417 ;------------------------------------------------------------------------------ 418 ; work ram clr
wake up! GOLDEN AXE The Revenge of Death-Adder!
DB 079h ; 0FFH Change here !! ModRM 110B,src EndM CodeMacro push src:Dw DB 041h ; 68H Change here !! DW src EndM CodeMacro push src:Db(-128,127) DB 0a7h ; 6AH Change here !! DB src EndM ;------------------------------------------------------------------------------ ;CodeMacro push src:Rw ; R53 <01010B,src> ; 01010B Change here !! ;EndM CodeMacro push src:Rw(AW) DB 06dh ; R53 <01010B,000B> Change here !! EndM CodeMacro push src:Rw(BW) DB 05bh ; R53 <01010B,011B> Change here !! EndM CodeMacro push src:Rw(CW) DB 00dh ; R53 <01010B,001B> Change here !! EndM CodeMacro push src:Rw(DW) DB 08fh ; R53 <01010B,010B> Change here !! EndM CodeMacro push src:Rw(SP) DB 0f8h ; R53 <01010B,100B> Change here !! EndM CodeMacro push src:Rw(BP) DB 0ffh ; R53 <01010B,101B> Change here !! EndM CodeMacro push src:Rw(IX) DB 022h ; R53 <01010B,110B> Change here !! EndM CodeMacro push src:Rw(IY) DB 09fh ; R53 <01010B,111B> Change here !! EndM ;------------------------------------------------------------------------------ CodeMacro push src:I (R) DB 0aeh ; 60H Change here !! EndM CodeMacro push src:I (PSW) DB 012h ; 9CH Change here !! EndM CodeMacro rep Prefx DB 048h ; 0F3H Change here !! EndM CodeMacro repc Prefx DB 004h ; 65H Change here !! EndM CodeMacro repe Prefx DB 048h ; 0F3H Change here !! EndM CodeMacro repnc Prefx DB 0b4h ; 64H Change here !! EndM CodeMacro repne Prefx DB 06bh ; 0F2H Change here !! EndM CodeMacro repnz Prefx DB 06bh ; 0F2H Change here !! EndM CodeMacro repz Prefx DB 048h ; 0F3H Change here !! EndM ;------------------------------------------------------------------------------ CodeMacro ret src:Dw R413 <1100B,Proclen,010B> ; 1100B , 010B Change here !! DW src EndM CodeMacro ret src:Db R413 <1100B,Proclen,010B> ; 1100B , 010B Change here !! DW src EndM CodeMacro ret R413 <1100B,Proclen,011B> ; 1100B , 011B Change here !! EndM ;------------------------------------------------------------------------------ CodeMacro reti DB 093h ; 0CFH Change here !! EndM CodeMacro retrbi DB 0d0h ; 0FH Change here !! DB 91H EndM CodeMacro rol dst:Ew,count:Db Segfix dst DB 07ah ; 0C1H Change here !! ModRM 000B,dst DB count EndM CodeMacro rol dst:Eb,count:Db Segfix dst DB 036h ; 0C0H Change here !! ModRM 000B,dst DB count EndM CodeMacro rol dst=Ew,count:Rb(CL) Segfix dst DB 0bdh ; 0D3H Change here !! ModRM 000B,dst EndM CodeMacro rol dst=Eb,count:Rb(CL) Segfix dst DB 0a4h ; 0D2H Change here !! ModRM 000B,dst EndM CodeMacro rol dst:Ew,count:Db(1) Segfix dst DB 0e1h ; 0D1H Change here !! ModRM 000B,dst EndM CodeMacro rol dst:Eb,count:Db(1) Segfix dst DB 052h ; 0D0H Change here !! ModRM 000B,dst EndM CodeMacro rol4 dst:Eb Segfix dst ; DW 280FH DB 0d0h DB 28H ; 0FH Change here !! ModRM 000B,dst EndM CodeMacro rolc dst:Ew,count:Db Segfix dst DB 07ah ; 0C1H Change here !! ModRM 010B,dst DB count EndM CodeMacro rolc dst:Eb,count:Db Segfix dst DB 036h ; 0C0H Change here !! ModRM 010B,dst DB count EndM CodeMacro rolc dst=Ew,count:Rb(CL) Segfix dst DB 0bdh ; 0D3H Change here !! ModRM 010B,dst EndM CodeMacro rolc dst=Eb,count:Rb(CL) Segfix dst DB 0a4h ; 0D2H Change here !! ModRM 010B,dst EndM CodeMacro rolc dst:Ew,count:Db(1) Segfix dst DB 0e1h ; 0D1H Change here !! ModRM 010B,dst EndM CodeMacro rolc dst:Eb,count:Db(1) Segfix dst DB 052h ; 0D0H Change here !! ModRM 010B,dst EndM CodeMacro ror dst:Ew,count:Db Segfix dst DB 07ah ; 0C1H Change here !! ModRM 001B,dst DB count EndM CodeMacro ror dst:Eb,count:Db Segfix dst DB 036h ; 0C0H Change here !! ModRM 001B,dst DB count EndM CodeMacro ror dst=Ew,count:Rb(CL) Segfix dst DB 0bdh ; 0D3H Change here !! ModRM 001B,dst EndM CodeMacro ror dst=Eb,count:Rb(CL) Segfix dst DB 0a4h ; 0D2H Change here !!
shr dst=Ew,count:Rb(CL) Segfix dst DB 0bdh ; 0D3H Change here !! ModRM 101B,dst EndM CodeMacro shr dst=Eb,count:Rb(CL) Segfix dst DB 0a4h ; 0D2H Change here !! ModRM 101B,dst EndM CodeMacro shr dst:Ew,count:Db(1) Segfix dst DB 0e1h ; 0D1H Change here !! ModRM 101B,dst EndM CodeMacro shr dst:Eb,count:Db(1) Segfix dst DB 052h ; 0D0H Change here !! ModRM 101B,dst EndM CodeMacro shra dst:Ew,count:Db Segfix dst DB 07ah ; 0C1H Change here !! ModRM 111B,dst DB count EndM CodeMacro shra dst:Eb,count:Db Segfix dst DB 036h ; 0C0H Change here !! ModRM 111B,dst DB count EndM CodeMacro shra dst=Ew,count:Rb(CL) Segfix dst DB 0bdh ; 0D3H Change here !! ModRM 111B,dst EndM CodeMacro shra dst=Eb,count:Rb(CL) Segfix dst DB 0a4h ; 0D2H Change here !! ModRM 111B,dst EndM CodeMacro shra dst:Ew,count:Db(1) Segfix dst DB 0e1h ; 0D1H Change here !! ModRM 111B,dst EndM CodeMacro shra dst:Eb,count:Db(1) Segfix dst DB 052h ; 0D0H Change here !! ModRM 111B,dst EndM CodeMacro stm Di_ptr:Mw NoSegfix DS1,Di_ptr DB 0fch ; 0ABH Change here !! EndM CodeMacro stm Di_ptr:Mb NoSegfix DS1,Di_ptr DB 081h ; 0AAH Change here !! EndM CodeMacro stmb DB 081h ; 0AAH Change here !! EndM CodeMacro stmw DB 0fch ; 0ABH Change here !! EndM CodeMacro stop DB 0d0h ; 0FH Change here !! DB 9EH EndM CodeMacro sub dst:Ew,src:Dw Segfix dst DB 053h ; 81H Change here !! ModRM 101B,dst DW src EndM CodeMacro sub dst:Eb,src:Db Segfix dst DB 0fdh ; 80H Change here !! ModRM 101B,dst DB src EndM CodeMacro sub dst:Ew,src:Db Segfix dst DB 053h ; 81H Change here !! ModRM 101B,dst DW src EndM CodeMacro sub dst:Ew,src:Db(-128,127) Segfix dst DB 08ah ; 83H Change here !! ModRM 101B,dst DB src EndM CodeMacro sub dst:Ew,src:Rw Segfix dst DB 009h ; 29H Change here !! ModRM src,dst EndM CodeMacro sub dst:Eb,src:Rb Segfix dst DB 0b1h ; 28H Change here !! ModRM src,dst EndM CodeMacro sub dst:Rw,src:Ew Segfix src DB 00bh ; 2BH Change here !! ModRM dst,src EndM CodeMacro sub dst:Rb,src:Eb Segfix src DB 028h ; 2AH Change here !! ModRM dst,src EndM CodeMacro sub dst:Aw,src:Dw DB 082h ; 2DH Change here !! DW src EndM CodeMacro sub dst:Aw,src:Db DB 082h ; 2DH Change here !! DW src EndM CodeMacro sub dst:Ab,src:Db DB 04ah ; 2CH Change here !! DB src EndM CodeMacro sub4s dst:M ,src:M NoSegfix DS1,dst Segfix src ; DW 220FH DB 0d0h DB 22H ; 0FH Change here !! EndM CodeMacro sub4s ; DW 220FH DB 0d0h DB 22H ; 0FH Change here !! EndM CodeMacro subc dst:Ew,src:Dw Segfix dst DB 053h ; 81H Change here !! ModRM 011B,dst DW src EndM CodeMacro subc dst:Eb,src:Db Segfix dst DB 0fdh ; 80H Change here !! ModRM 011B,dst DB src EndM CodeMacro subc dst:Ew,src:Db Segfix dst DB 053h ; 81H Change here !! ModRM 011B,dst DW src EndM CodeMacro subc dst:Ew,src:Db(-128,127) Segfix dst DB 08ah ; 83H Change here !! ModRM 011B,dst DB src EndM CodeMacro subc dst:Ew,src:Rw Segfix dst DB 03ah ; 19H Change here !! ModRM src,dst EndM CodeMacro subc dst:Eb,src:Rb Segfix dst DB 019h ; 18H Change here !! ModRM src,dst EndM CodeMacro subc dst:Rw,src:Ew Segfix src DB 088h ; 1BH Change here !! ModRM dst,src EndM CodeMacro subc dst:Rb,src:Eb Segfix src DB 0d7h ; 1AH Change here !! ModRM dst,src EndM CodeMacro subc dst:Aw,src:Dw DB 0a3h ; 1DH Change here !! DW src EndM CodeMacro subc dst:Aw,src:Db DB 0a3h ; 1DH Change here !! DW src EndM CodeMacro subc dst:Ab,src:Db DB 0b7h ; 1CH Change here !! DB src EndM CodeMacro test dst:Ew,src:Dw Segfix dst DB 05fh ; 0F7H Change here !! ModRM 000B,dst DW src EndM CodeMacro test dst:Eb,src:Db Segfix dst DB 0c0h ; 0F6H Change here !! ModRM 000B,dst DB src EndM CodeMacro test dst:Ew,src:Db Segfix dst DB 05fh ; 0F7H Change here !! ModRM 000B,dst DW src EndM CodeMacro test dst:Ew,src:Rw Segfix dst DB 014h ; 85H Change here !! ModRM src,dst EndM CodeMacro test dst:Eb,src:Rb Segfix dst DB 027h ; 84H Change here !! ModRM src,dst EndM CodeMacro test dst:Rw,src:Ew Segfix src DB 014h ; 85H Change here !! ModRM dst,src EndM CodeMacro test dst:Rb,src:Eb Segfix src DB 027h ; 84H Change here !! ModRM dst,src EndM CodeMacro test dst:Aw,src:Dw DB 04bh ; 0A9H Change here !! DW src EndM CodeMacro test dst:Aw,src:Db DB 04bh ; 0A9H Change here !! DW src EndM CodeMacro test dst:Ab,src:Db DB 0d2h ; 0A8H Change here !! DB src EndM CodeMacro test1 dst=Ew,off:Db(0,15) Segfix dst ; DW 190FH DB 0d0h DB 19H ; 0FH Change here !! ModRM 000B,dst DB off EndM CodeMacro test1 dst=Eb,off:Db(0,7) Segfix dst ; DW 180FH DB 0d0h DB 18H ; 0FH Change here !! ModRM 000B,dst DB off EndM CodeMacro test1 dst:Ew,off:Rb(CL) Segfix dst ; DW 110FH DB 0d0h DB 11H ; 0FH Change here !! ModRM 000B,dst EndM CodeMacro test1 dst:Eb,off:Rb(CL) Segfix dst ; DW 100FH DB 0d0h DB 10H ; 0FH Change here !! ModRM 000B,dst EndM CodeMacro trans table:Mb Segfix table DB 08dh ; 0D7H Change here !! EndM CodeMacro trans DB 08dh ; 0D7H Change here !! EndM CodeMacro transb DB 08dh ; 0D7H Change here !! EndM CodeMacro xch dst:Ew,src:Rw Segfix dst DB 0bch ; 87H Change here !! ModRM src,dst EndM CodeMacro xch dst:Eb,src:Rb Segfix dst DB 0b0h ; 86H Change here !! ModRM src,dst EndM CodeMacro xch dst:Rw,src:Ew Segfix src DB 0bch ; 87H Change here !! ModRM dst,src EndM CodeMacro xch dst:Rb,src:Eb Segfix src DB 0b0h ; 86H Change here !! ModRM dst,src EndM ;------------------------------------------------------------------------------ ;CodeMacro xch dst:Aw,src:Rw ; R53 <10010B,src> ; 10010B Change here !! ;EndM CodeMacro xch dst:Aw,src:Rw(AW) DB 90h ; R53 <10010B,000B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(BW) DB 04dh ; R53 <10010B,011B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(CW) DB 08bh ; R53 <10010B,001B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(DW) DB 0d1h ; R53 <10010B,010B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(SP) DB 084h ; R53 <10010B,100B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(BP) DB 02dh ; R53 <10010B,101B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(IX) DB 0e3h ; R53 <10010B,110B> Change here !! EndM CodeMacro xch dst:Aw,src:Rw(IY) DB 072h ; R53 <10010B,111B> Change here !! EndM ;------------------------------------------------------------------------------ ;CodeMacro xch dst:Rw,src:Aw ; R53 <10010B,dst> ; 10010B Change here !! ;EndM CodeMacro xch dst:Rw(AW),src:Aw DB 90h ; R53 <10010B,000B> Change here !! EndM CodeMacro xch dst:Rw(BW),src:Aw DB 04dh ; R53 <10010B,011B> Change here !! EndM CodeMacro xch dst:Rw(CW),src:Aw DB 08bh ; R53 <10010B,001B> Change here !! EndM CodeMacro xch dst:Rw(DW),src:Aw DB 0d1h ; R53 <10010B,010B> Change here !! EndM CodeMacro xch dst:Rw(SP),src:Aw DB 084h ; R53 <10010B,100B> Change here !! EndM CodeMacro xch dst:Rw(BP),src:Aw DB 02dh ; R53 <10010B,101B> Change here !! EndM CodeMacro xch dst:Rw(IX),src:Aw DB 0e3h ; R53 <10010B,110B> Change here !! EndM CodeMacro xch dst:Rw(IY),src:Aw DB 072h ; R53 <10010B,111B> Change here !! EndM ;------------------------------------------------------------------------------ CodeMacro xor dst:Ew,src:Dw Segfix dst DB 053h ; 81H Change here !! ModRM 110B,dst DW src EndM CodeMacro xor dst:Eb,src:Db Segfix dst DB 0fdh ; 80H Change here !! ModRM 110B,dst DB src EndM CodeMacro xor dst:Ew,src:Db Segfix dst DB wake up! GOLDEN AXE The Revenge of Death-Adder! wake up! GOLDEN AXE The Revenge of Death-Adder! aramawari ;------------------------------------------------------------------------------ ; SFR INITIAL ;------------------------------------------------------------------------------ INIT PROC _INIT: mov aw,0 mov ds0,aw mov aw,0ff00h mov ds1,aw mov cw,9 ldea ix,ITDT INITLP: mov iy,word ptr ds0:[ix] mov dl,byte ptr ds0:[ix+2] mov byte ptr ds1:[iy],dl add ix,4 dec cw bnz INITLP RET INIT ENDP ;------------------------------------------------------------------------------ ; V25 read/write check ;------------------------------------------------------------------------------ RW22 PROC _RW22: mov ch,byte ptr ds1:[ix+1] cmp ch,20h ; V25 r/w start ? bne _RW22 mov bw,8 ; counter offset (0008h) mov dh,byte ptr ds1:[ix+6h] ; add data mov dl,byte ptr ds1:[ix+7h] ; write start data LP_22: call AD_SET mov byte ptr ds1:[iy],dl ; RAM data write mov cl,byte ptr ds1:[iy] ; RAM data read cmp cl,dl bnz R22_NG add dl,dh inc bw cmp bw,7f0h ;stack area (10h) keep bnz LP_22 mov ch,22h ; RAM OK data set call SET_ON RET R22_NG: mov ch,2ah ; RAM NG data set call SET_ON RET RW22 ENDP ;------------------------------------------------------------------------------ ; V25 read / V60 write check ;------------------------------------------------------------------------------ RW26 PROC _RW26: mov ch,byte ptr ds1:[ix+1] cmp ch,4fh ; V60 write end ? bne _RW26 mov bw,8 ; counter offset (0008h) mov dh,byte ptr ds1:[ix+6h] ; add data mov dl,byte ptr ds1:[ix+7h] ; write start data LP_26: call AD_SET mov cl,byte ptr ds1:[iy] ; RAM data read cmp cl,dl bnz R26_NG add dl,dh inc bw cmp bw,7f0h bnz LP_26 mov ch,44h ; RAM OK data set call SET_ON RET R26_NG: mov ch,4ah ; RAM NG data set call SET_ON RET RW26 ENDP ;------------------------------------------------------------------------------ ; V60 read / V25 write check ;------------------------------------------------------------------------------ RW62 PROC _RW62: mov ch,byte ptr ds1:[ix+1] cmp ch,50h ; before result write end ? bne _RW62 mov bw,8 ; counter offset (0008h) mov dh,byte ptr ds1:[ix+6h] ; add data mov dl,byte ptr ds1:[ix+7efh] ; write start data mov byte ptr ds1:[ix+7h],dl ; write start data LP_62: call AD_SET mov byte ptr ds1:[iy],dl ; RAM data write add dl,dh inc bw cmp bw,7f0h bnz LP_62 mov ch,5fh ; write end code set call SET_ON RET RW62 ENDP ;------------------------------------------------------------------------------ ; arabian fight security routin ;------------------------------------------------------------------------------ WRITE_AXE PROC _RW_AXE: ldea ix,PLCOL_AX mov iy,0 ; mov cw,16 ;loop count loop: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop RET PLAYCOL1 equ 0000000aH PLAYCOL2 equ 00000011H PLAYCOL3 equ 00000018H PLAYCOL4 equ 0000001fH ZANZOCOL1 equ 000000c5H ZANZOCOL2 equ 000000c6H PLCOL_AXE dw PLAYCOL1 -- body color dw ZANZOCOL1 -- zanzoh color dw PLAYCOL2 -- body color dw PLAYCOL2 -- zanzoh color dw PLAYCOL3 -- body color dw PLAYCOL3 -- zanzoh color dw PLAYCOL4 -- body color dw ZANZOCOL2 -- zanzoh color WRITE_AXE ENDP ;------------------------------------------------------------------------------ ; event security routin ;------------------------------------------------------------------------------ ;000h~3ffh write buff ;080h~0afh (startup function work) ;400h~7ffh read buff ;------------------------------------------------------------------------------ ; start up function ;------------------------------------------------------------------------------ START_FUNC PROC _ST_FU: ldea ix,MESS_ST mov iy,080h ;start function write buff mov cw,16*3 ;loop count loop_st: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_st RET ;0123456789abcdef MESS_ST db 'wake up! GOLDEN ' ;16 byte 1 group db 'AXE The Revenge ' ;16 byte 1 group db 'of Death-Adder! ' ;16 byte 1 group START_FUNC ENDP ;------------------------------------------------------------------------------ ; work ram clr ;------------------------------------------------------------------------------ WORK_RAM_CLR PROC _WO_RA: mov iy,0000h ;work ram write adr. mov cw,0400h ;loop count mov dl,0000h loop_wc: mov byte ptr ds1:[iy],dl add iy,1 dec cw bnz loop_wc RET WORK_RAM_CLR ENDP ;------------------------------------------------------------------------------ ; RAM check result set routine ;------------------------------------------------------------------------------ SET_ON PROC _SET_ON: mov byte ptr ds1:[ix+1],ch ; check result set mov cl,byte ptr ds1:[ix+1] ; result set ok ? cmp ch,cl bnz _SET_ON RET SET_ON ENDP ;------------------------------------------------------------------------------ ; V25 address chenge & set routine ix : 0 ; aw : chenge address ; bw : address counter ;------------------------------------------------------------------------------ AD_SET PROC AST_LP: mov byte ptr ds1:[ix+2],bl ; lower address set (10002h) mov byte ptr ds1:[ix+3],bh ; upper address set (10004h) mov cl,byte ptr ds1:[ix+2] ; lower set ok ? mov ch,byte ptr ds1:[ix+3] ; upper set ok ? cmp bw,cw bnz AST_LP mov iy,bw RET AD_SET ENDP RMCK ENDS ;------------------------------------------------------------------------------ ; data table ;------------------------------------------------------------------------------ RMCK SEGMENT org 1000h ;xxf01=00 --pm0 ;xxf02=00 --pmc0 ;xxf09=00 --pm1 ;xxf0a=08 --pmc1 ;xxf11=00 --pm2 ;xxf12=00 --pmc2 ;xxfe8=00 --wtc ;xxfe9=00 --??? ;xxfeb=00 --prc ITDT dw 0f01h,0,0f02h,0,0f09h,0,0f0ah,8,0f11h,0,0f12h,0 dw 0fe8h,1001h,0fe9h,0,0febh,4ch RMCK ENDS ;------------------------------------------------------------------------------ ; reset vecter ;------------------------------------------------------------------------------ RMCK SEGMENT org 0fff0h br FAR PTR START RMCK ENDS END ST_LP: mov byte ptr ds1:[ix+2],bl ; lower address set (10002h) mov byte ptr ds1:[ix+3],bh ; upper address set (10004h) mov cl,byte ptr ds1:[ix+2] ; lower set ok ? mov ch,byte ptr ds1:[ix+3] ; upper set ok ? cmp bw,cw bnz AST_LP mov iy,bw RET AD_SET ENDP RMCK ENDS ;------------------------------------------------------------------------------ ; data table ;------------------------------------------------------------------------------ RMCK SEGMENT org 1000h ;xxf01=00 --pm0 ;xxf02=00 --pmc0 ;xxf09=00 --pm1 ;xxf0a=08 --pmc1 ;xxf11=00 --pm2 ;xxf12=00 --pmc2 ;xxfe8=00 --wtc ;xxfe9=00 --??? ;xxfeb=00 --prc ITDT dw 0f01h,0,0f02h,0,0f09h,0,0f0ah,8,0f11h,0,0f12h,0 dw 0fe8h,1001h,0fe9h,0,0febh,4ch RMCK ENDS ;------------------------------------------------------------------------- ;000h~3ffh write buff ;000h~00fh (mode name buff) ;010h~01fh (id name buff) ;080h~08fh (startup function work) ;400h~7ffh read buff ;400h (1)main_mode ;401h (1)id(player 0) ;402h (1)id(player 1) ;403h (1)id(player 2) ;404h (1)id(player 3) WRITE_EVENT0 PROC mov iy,401h ;player0 id mov dw,0 mov dl,byte ptr ds1:[iy] ;v60 mainmode*16 read cmp dl,-1 be exit_ev0 ldea ix,MESS_EV0 add ix,dw mov iy,10h ;id name buff mov cw,16 ;loop count loop_ev0: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_ev0 exit_ev0: RET ;0123456789abcdef MESS_EV0 db 'sinbat ' ;16 byte 1 group db 'ramaya ' ;16 byte 1 group db 'goldor ' ;16 byte 1 group db 'data ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group WRITE_EVENT0 ENDP WRITE_EVENT1 PROC mov iy,402h ;player1 id mov dw,0 mov dl,byte ptr ds1:[iy] ;v60 mainmode*16 read cmp dl,-1 be exit_ev1 ldea ix,MESS_EV1 add ix,dw mov iy,20h ;id name buff mov cw,16 ;loop count loop_ev1: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_ev1 exit_ev1: RET ;0123456789abcdef MESS_EV1 db 'sinbat ' ;16 byte 1 group db 'ramaya ' ;16 byte 1 group db 'goldor ' ;16 byte 1 group db 'data ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group WRITE_EVENT1 ENDP WRITE_EVENT2 PROC mov iy,403h ;player0 id mov dw,0 mov dl,byte ptr ds1:[iy] ;v60 mainmode*16 read cmp dl,-1 be exit_ev2 ldea ix,MESS_EV2 add ix,dw mov iy,30h ;id name buff mov cw,16 ;loop count loop_ev2: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_ev2 exit_ev2: RET ;0123456789abcdef MESS_EV2 db 'sinbat ' ;16 byte 1 group db 'ramaya ' ;16 byte 1 group db 'goldor ' ;16 byte 1 group db 'data ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group WRITE_EVENT2 ENDP WRITE_EVENT3 PROC mov iy,404h ;player0 id mov dw,0 mov dl,byte ptr ds1:[iy] ;v60 mainmode*16 read cmp dl,-1 be exit_ev3 ldea ix,MESS_EV3 add ix,dw mov iy,40h ;id name buff mov cw,16 ;loop count loop_ev3: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_ev3 exit_ev3: RET ;0123456789abcdef MESS_EV3 db 'sinbat ' ;16 byte 1 group db 'ramaya ' ;16 byte 1 group db 'goldor ' ;16 byte 1 group db 'data ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group db ' ' ;16 byte 1 group WRITE_EVENT3 ENDP ;------------------------------------------------------------------------------ ; start up function ;------------------------------------------------------------------------------ START_FUNC PROC _ST_FU: ldea ix,MESS_ST mov iy,080h ;start function write buff mov cw,16*3 ;loop count loop_st: mov dl,byte ptr ds0:[ix] mov byte ptr ds1:[iy],dl add ix,1 add iy,1 dec cw bnz loop_st RET ;0123456789abcdef MESS_ST db 'wake up! GOLDEN ' ;16 byte 1 group db 'AXE The Revenge ' ;16 byte 1 group db 'of Death-Adder! ' ;16 byte 1 group START_FUNC ENDP ;------------------------------------------------------------------------------ ; work ram clr ;------------------------------------------------------------------------------ WORK_RAM_CLR PROC _WO_RA: mov iy,0000h ;work ram write adr. mov cw,0400h ;loop count mov dl,0000h loop_wc: mov byte ptr ds1:[iy],dl add iy,1 dec cw bnz loop_wc RET WORK_RAM_CLR ENDP ;------------------------------------------------------------------------------ ; RAM check result set routine ;------------------------------------------------------------------------------ SET_ON PROC _SET_ON: mov byte ptr ds1:[ix+1],ch ; check result set mov cl,byte ptr ds1:[ix+1] ; result set ok ? cmp ch,cl bnz _SET_ON RET SET_ON ENDP ;------------------------------------------------------------------------------ ; V25 address chenge & set routine ix : 0 ; aw : chenge address ; bw : address counter ;------------------------------------------------------------------------------ AD_SET PROC AST_LP: mov byte ptr ds1:[ix+2],bl ; lower address set (10002h) mov byte ptr ds1:[ix+3],bh ; upper address set (10004h) mov cl,byte ptr ds1:[ix+2] ; lower set ok ? mov ch,byte ptr ds1:[ix+3] ; upper set ok ? cmp bw,cw bnz AST_LP mov iy,bw RET AD_SET ENDP RMCK ENDS ;------------------------------------------------------------------------------ ; data table ;-------------------------------------------------------
References
The Golden Axe series
| |
---|---|
Arcade | Golden Axe • Golden Axe: The Revenge of Death Adder • Golden Axe: The Duel |
Genesis | Golden Axe (Prototype) • Golden Axe II (Prototype) • Golden Axe III |
TurboGrafx-CD | Golden Axe |
Game Gear | Ax Battler: A Legend of Golden Axe |
Sega Saturn | Golden Axe: The Duel |
WonderSwan Color | Golden Axe |
PlayStation 2 | Sega Ages 2500 Series Vol. 5: Golden Axe |
Cleanup > Pages missing date references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Sega > Games developed by Sega AM1
Games > Games by platform > Arcade games
Games > Games by publisher > Games published by Sega
Games > Games by release date > Games released in 1992
Games > Games by release date > Games released in September
Games > Games by series > Golden Axe series