30

But what's about pieces of code by 04BA6E, 04BDBA, 04CD6E, 04D28A, 04DB40 and 04E1D6 addresses?
avatar

31

By the way, since we ingaged in disassembly reverse engineering, is there a MIPS3 assembly languange specialists here? I need them to make a RE of Xenosaga Episode II disassembly, and after that to create a Shaman King role\combat system on the base of Xenosaga Episode II role\combat system RE results.

Here is the IDA Pro file with a SLUS_208.92 disassembly code - I supposed, the PS2 files with a names of such format is a functional analogue of EXE files on PC.
avatar

32

Also I think, It's worth to borrow some future SK role/combat system elements from Pokemon Gold/Silver/Crystal (Unfortunately, I didn't learn yet, how to disassemble the whole GBC rom file - not only the ROM bank which is accessible at this moment. Does anybody here know how to do it?) and from Doom RPG mobile game (the decompiled Java source files are taken using DJ Java Decompiler).
avatar

33

After I'm tired to wait an answer to my question for a few months, I decided to continue the KoF '94 disassembly research by myself:

04BA6E: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6 04BA74: 4EBA 019E jsr ($19e,PC) ; ($4bc14) 04BA78: 4E71 nop 04BA7A: 082C 0000 00C9 btst #$0, ($c9,A4) 04BA80: 6700 0014 beq $4ba96 ; if 1st bit of ((initial A4 value+$c9)^1)+$c9 value is equal to 0 then end the subroutine ahead of time 04BA84: 4EBA 004C jsr ($4c,PC) ; ($4bad2) ; else goto $4bad2 subroutine 04BA88: 4E71 nop 04BA8A: 4EBA 01BA jsr ($1ba,PC) ; ($4bc46) 04BA8E: 4E71 nop 04BA90: 4EBA 0218 jsr ($218,PC) ; ($4bcaa) 04BA94: 4E71 nop 04BA96: 4E75 rts04BC14: 082D 0003 39F5 btst #$3, ($39f5,A5) 04BC1A: 6700 0028 beq $4bc44 ; if 4th bit of $39f5 + A5 value is equal to 0 then end subroutine ahead of time 04BC1E: 082D 0002 39F6 btst #$2, ($39f6,A5) 04BC24: 6700 001E beq $4bc44 ; else if 3rd bit of $39f6 + A5 value is equal to 0 then end subroutine ahead of time 04BC28: 0A2C 0001 00C9 eori.b #$1, ($c9,A4) ; else (A4+$c9)^1 04BC2E: 302C 00CC move.w ($cc,A4), D0 ; D0=((initial A4 value+$c9)^1)+$cc 04BC32: 322C 00CE move.w ($ce,A4), D1 ; D1=((initial A4 value+$c9)^1)+$ce 04BC36: 343C 0007 move.w #$7, D2 ; D2=7 04BC3A: 363C 0006 move.w #$6, D3 ; D3=6 04BC3E: 4EB9 0000 5FEA jsr $5fea.l 04BC44: 4E75 rts04BAD2: 102D 39CD move.b ($39cd,A5), D0 ; D0=A5+$39cd 04BAD6: 0240 000F andi.w #$f, D0 04BADA: 41FA 0354 lea ($354,PC) ; ($4be30), A0 ; A0=$ff02 04BADE: 4E71 nop 04BAE0: 7200 moveq #$0, D1 ; D1=0 04BAE2: 1230 0000 move.b (A0,D0.w), D1 ; D1=$ff02+(A5+$39cd) 04BAE6: 6B00 0022 bmi $4bb0a ; if $ff02+(A5+$39cd) is negative then end the subroutine ahead of time 04BAEA: D241 add.w D1, D1 04BAEC: D241 add.w D1, D1 ; else D1=($ff02+(A5+$39cd))*4 04BAEE: 41FA 001C lea ($1c,PC) ; ($4bb0c), A0 ; A0=(swapped value of (((((A4+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$2c 04BAF2: 4E71 nop 04BAF4: 082D 0002 39F5 btst #$2, ($39f5,A5) 04BAFA: 6700 0008 beq $4bb04 ; if 3rd bit of (A5+$39f5) value is equal to 0 then skip the next 2 operations 04BAFE: 41FA 001C lea ($1c,PC) ; ($4bb1c), A0 ; else A0=(swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$7c 04BB02: 4E71 nop 04BB04: 2070 1000 movea.l (A0,D1.w), A0 ; A0=((swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$7c)+(($ff02+(A5+$39cd))*4) 04BB08: 4E90 jsr (A0) ; goto $((swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$7c)+(($ff02+(A5+$39cd))*4) 04BB0A: 4E75 rts04BC46: 082D 0004 39CD btst #$4, ($39cd,A5) 04BC4C: 6700 0038 beq $4bc86 ; if 5th bit of A5+$39cd value is equal to 0 then goto $4bc86 subroutine 04BC50: 0C2C 0005 00D0 cmpi.b #$5, ($d0,A4) 04BC56: 6200 002C bhi $4bc84 ; if A4+$d0>5 then end the subroutine ahead of time 04BC5A: 422C 00C9 clr.b ($c9,A4) ; else [A4+$c9] value=0 04BC5E: 7000 moveq #$0, D0 ; D0=0 04BC60: 102C 00D0 move.b ($d0,A4), D0 ; D0=A4+$d0 04BC64: 5200 addq.b #1, D0 ; D0=A4+$d0+#1 04BC66: 01EC 00C9 bset D0, ($c9,A4) ; (A4+$d0+#1)th bit of A4+$c9 value is equal to 1 04BC6A: 302C 00CC move.w ($cc,A4), D0 ; D0=A4+$cc 04BC6E: 322C 00CE move.w ($ce,A4), D1 ; D1=A4+$ce 04BC72: 343C 0007 move.w #$7, D2 ; D2=7 04BC76: 363C 0006 move.w #$6, D3 ; D3=6 04BC7A: 4EB9 0000 5FEA jsr $5fea.l 04BC80: 422D 39CD clr.b ($39cd,A5) ; [A5+$39cd] value=0 04BC84: 4E75 rts04BCAA: 082C 0000 00C9 btst #$0, ($c9,A4) 04BCB0: 6700 0088 beq $4bd3a ; if 1st bit of A4+$c9 value is equal to 0 then end the subroutine ahead of time 04BCB4: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) ; A4+$d4 value = A4+$cc value 04BCBA: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) ; A4+$d6 value = A4+$ce value 04BCC0: 302C 00D4 move.w ($d4,A4), D0 ; D0=A4+$cc value 04BCC4: 322C 00D6 move.w ($d6,A4), D1 ; D1=A4+$ce value 04BCC8: 4EB9 0000 5FDE jsr $5fde.l 04BCCE: 207C 0006 E87A movea.l #$6e87a, A0 ; A0=#$6e87a 04BCD4: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+[A4+$ce] value+#$7002) value=#$f00 04BCD8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04BCDE: 4EB9 0000 5F0C jsr $5f0c.l 04BCE4: 546C 00D6 addq.w #2, ($d6,A4) ; [A4+$d6] value+2 04BCE8: 7E03 moveq #$3, D7 ; D7=3 04BCEA: 7C00 moveq #$0, D6 ; D6=0 04BCEC: 7A00 moveq #$0, D5 ; D5=0 04BCEE: 1A2C 00C8 move.b ($c8,A4), D5 ; D5=[A4+$c8] value 04BCF2: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$d4] value 04BCF6: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$d6] value 04BCFA: 4EB9 0000 5FDE jsr $5fde.l 04BD00: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$d4] value<<5)+[A4+$d6] value+#$7002) value=#$f00 04BD04: BC2C 00D1 cmp.b ($d1,A4), D6 04BD08: 6600 0006 bne $4bd10 ; if [A4+$d1] value !=0 then skip next operation 04BD0C: 0040 8000 ori.w #$8000, D0 ; else (swapped (([A4+$d4] value<<5)+[A4+$d6] value+#$7002) value)|#$8000 04BD10: 7800 moveq #$0, D4 ; D4=0 04BD12: 1805 move.b D5, D4 ; D4=[A4+$c8] value 04BD14: D844 add.w D4, D4 04BD16: D844 add.w D4, D4 ; D4=([A4+$c8] value)*4 04BD18: 41FA 0022 lea ($22,PC) ; ($4bd3c), A0 04BD1C: 4E71 nop 04BD1E: 2070 4000 movea.l (A0,D4.w), A0 ; A0=$4bd3c value+(([A4+$c8] value)*4) 04BD22: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04BD28: 4EB9 0000 5F0C jsr $5f0c.l 04BD2E: 526C 00D6 addq.w #1, ($d6,A4) ; [A4+$d6] value+1 04BD32: 5205 addq.b #1, D5 ; [A4+$c8] value+1 04BD34: 5206 addq.b #1, D6 ; D6=0+1=1 04BD36: 51CF FFBA dbra D7, $4bcf2 ; D7-1=3-1 ; if D7 <> 0 jump back to $4bcf2 04BD3A: 4E75 rts005FEA: 4EBA FFF2 jsr (-$e,PC) ; ($5fde) 005FEE: 303C 0F20 move.w #$f20, D0 ; lowest D0 word=#$f20 005FF2: 2800 move.l D0, D4 ; D4=swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20 005FF4: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 005FFA: 7C00 moveq #$0, D6 ; D6=0 005FFC: 3A02 move.w D2, D5 ; D5=7 005FFE: 23C0 003C 0000 move.l D0, $3c0000.l ; sending swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20 to REG_VRAMADDR 006004: D081 add.l D1, D0 ; D0=swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20+#$200000 006006: 51CD FFF6 dbra D5, $5ffe ; D5-1=4, jump back to $5ffe because D5 <> 0 00600A: 2004 move.l D4, D0 ; D0=swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20 00600C: 0686 0001 0000 addi.l #$10000, D6 ; D6=#$10000 006012: D086 add.l D6, D0 ; D0=(swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)+#$10000 006014: 51CB FFE6 dbra D3, $5ffc ; D3-1=5, jump back to $5ffc because D3 <> 0 006018: 4E75 rts005FDE: EB48 lsl.w #5, D0 ; D0=(((A4+$c9)^1)+$cc)<<5 005FE0: D041 add.w D1, D0 ; D0=((((A4+$c9)^1)+$cc)<<5)+D1 005FE2: 0640 7002 addi.w #$7002, D0 ; D0=((((A4+$c9)^1)+$cc)<<5)+D1+#$7002 005FE6: 4840 swap D0 005FE8: 4E75 rts04BE30: FF02 dc.w $ff02; opcode 111104BB0C: 0004 BB2C ori.b #$2c, D404BB1C: 0004 BB7C ori.b #$7c, D404BC86: 082D 0005 39CD btst #$5, ($39cd,A5) 04BC8C: 6700 0004 beq $4bc92 04BC90: 4E75 rts 04BC92: 082D 0006 39CD btst #$6, ($39cd,A5) 04BC98: 6700 0004 beq $4bc9e 04BC9C: 4E75 rts 04BC9E: 082D 0007 39CD btst #$7, ($39cd,A5) 04BCA4: 6700 0002 beq $4bca8 04BCA8: 4E75 rts005FDE: EB48 lsl.w #5, D0 005FE0: D041 add.w D1, D0 005FE2: 0640 7002 addi.w #$7002, D0 005FE6: 4840 swap D0 005FE8: 4E75 rts005F0C: 1018 move.b (A0)+, D0 ; read byte, inc A0 005F0E: 0C00 00FF cmpi.b #-$1, D0 ; -1 = 0xff 005F12: 6700 000C beq $5f20 ; if D0=#$ff then end the subroutine 005F16: 23C0 003C 0000 move.l D0, $3c0000.l ; else REG_VRAMADDR=D0 005F1C: D081 add.l D1, D0 ; D0=[(A0)+]+#$200000 005F1E: 60EC bra $5f0c ; return to start of subroutine 005F20: 4E75 rts
avatar

34

04BDBA: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6 04BDC0: 4EBA 0034 jsr ($34,PC) ; ($4bdf6) 04BDC4: 4E71 nop 04BDC6: 4EBA 0570 jsr ($570,PC) ; ($4c338) 04BDCA: 4E71 nop 04BDCC: 4EBA 0730 jsr ($730,PC) ; ($4c4fe) 04BDD0: 4E71 nop 04BDD2: 4EBA 052A jsr ($52a,PC) ; ($4c2fe) 04BDD6: 4E71 nop 04BDD8: 4E75 rts04BDF6: 102D 39CD move.b ($39cd,A5), D0 04BDFA: 0240 000F andi.w #$f, D0 ; D0=([A5+$39cd] value)&#$f 04BDFE: 41FA 0030 lea ($30,PC) ; ($4be30), A0 04BE02: 4E71 nop 04BE04: 7200 moveq #$0, D1 04BE06: 1230 0000 move.b (A0,D0.w), D1 ; D1=[$4be30]+(([A5+$39cd] value)&#$f) 04BE0A: 6B00 0022 bmi $4be2e ; if [$4be30]+(([A5+$39cd] value)&#$f) is negative then end the subroutine ahead of time 04BE0E: D241 add.w D1, D1 04BE10: D241 add.w D1, D1 ; else D1=([$4be30]+(([A5+$39cd] value)&#$f))*4 04BE12: 41FA 002C lea ($2c,PC) ; ($4be40), A0 04BE16: 4E71 nop 04BE18: 082D 0002 39F5 btst #$2, ($39f5,A5) 04BE1E: 6700 0008 beq $4be28 ; is 3rd bit of [A5+$39f5] value is equal to 0 then goto 4be28 subroutine 04BE22: 41FA 002C lea ($2c,PC) ; ($4be50), A0 04BE26: 4E71 nop 04BE28: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4be50] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4) 04BE2C: 4E90 jsr (A0) ; goto [[$4be50] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)] subroutine 04BE2E: 4E75 rts04C338: 082D 0000 39F5 btst #$0, ($39f5,A5) 04C33E: 6600 006E bne $4c3ae ; if 1st bit of [A5+$39f5] value is equal to 1 then goto $4c3ae subroutine 04C342: 082D 0004 39CD btst #$4, ($39cd,A5) 04C348: 6700 0012 beq $4c35c ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4c35c subroutine 04C34C: 206C 00C0 movea.l ($c0,A4), A0 ; A0=A4+$c0 04C350: 7000 moveq #$0, D0 ; D0=0 04C352: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04C356: 5230 0000 addq.b #1, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value+1 04C35A: 4E75 rts04C2FE: 082D 0003 39F5 btst #$3, ($39f5,A5) 04C304: 6700 0030 beq $4c336 ; if 4th bit of [A5+$39f5] is equal to 0 then end the subroutine ahead of time 04C308: 082D 0002 39F6 btst #$2, ($39f6,A5) 04C30E: 6700 0026 beq $4c336 ; if 3rd bit of [A5+$39f6] is equal to 0 then end the subroutine ahead of time 04C312: 206C 0084 movea.l ($84,A4), A0 ; A0=[A4+$84] 04C316: 4228 00C9 clr.b ($c9,A0) ; [A4+$14D] value=0 04C31A: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A4+$14D] value|1=0|1=1 Why it was need to zeroize [A4+$14D] value and to spend "or" opation over it after that, if this address is not used further? 04C320: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value 04C324: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value 04C328: 343C 0014 move.w #$14, D2 ; D2=#$14 04C32C: 363C 0012 move.w #$12, D3 ; D3=#$12 04C330: 4EB9 0000 5FEA jsr $5fea.l 04C336: 4E75 rts04BE28: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4be40] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4) 04BE2C: 4E90 jsr (A0) ; goto [[$4be40] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)] subroutine 04BE2E: 4E75 rts04C3AE: 082D 0001 39F6 btst #$1, ($39f6,A5) 04C3B4: 6700 0026 beq $4c3dc ; if 2nd bit of [A5+$39f6] value is equal to 0 then goto $4c3dc subroutine 04C3B8: 06AC 0000 5000 00C0 addi.l #$5000, ($c0,A4) ; [A4+$c0] value+#$5000 04C3C0: 522C 0070 addq.b #1, ($70,A4) 04C3C4: 0C2C 0019 0070 cmpi.b #$19, ($70,A4) 04C3CA: 6300 008E bls $4c45a ; if [A4+$70] value+1<=19 then end the subroutine ahead of time... by jumping to the [b]rts[/b] in another subroutine. Who knows why? 04C3CE: 532C 0070 subq.b #1, ($70,A4) ; else restore old [A4+$70] value which that memory section had before 04C3B8 step. 04C3D2: 04AC 0000 5000 00C0 subi.l #$5000, ($c0,A4) ; [A4+$c0] value-#$5000 04C3DA: 4E75 rts04C35C: 082D 0005 39CD btst #$5, ($39cd,A5) 04C362: 6700 0012 beq $4c376 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4c376 subroutine 04C366: 206C 00C0 movea.l ($c0,A4), A0 ; A0=A4+$c0 04C36A: 7000 moveq #$0, D0 ; D0=0 04C36C: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04C370: 5330 0000 subq.b #1, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value-1 04C374: 4E75 rts04C3DC: 082D 0003 39F6 btst #$3, ($39f6,A5) 04C3E2: 6700 0020 beq $4c404 ; if 4th bit of [A5+$39f6] value is equal to 0 then goto $4c404 subroutine 04C3E6: 04AC 0000 5000 00C0 subi.l #$5000, ($c0,A4) ; [A4+$c0] value-#$5000 04C3EE: 532C 0070 subq.b #1, ($70,A4) ; 04C3F2: 6400 0066 bcc $4c45a ; if [A4+$70] value >=1 then end the subroutine ahead of time... by jumping to the [b]rts[/b] in another subroutine. Who knows why? 04C3F6: 522C 0070 addq.b #1, ($70,A4) ; else restore old [A4+$70] value which that memory section had before 04C3EE step. 04C3FA: 06AC 0000 5000 00C0 addi.l #$5000, ($c0,A4) ; [A4+$c0] value+#$5000 04C402: 4E75 rts04C45A: 4E75 rts04C376: 082D 0006 39CD btst #$6, ($39cd,A5) 04C37C: 6700 0014 beq $4c392 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4c392 subroutine 04C380: 206C 00C0 movea.l ($c0,A4), A0 ; A0=A4+$c0 04C384: 7000 moveq #$0, D0 ; D0=0 04C386: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04C38A: 0630 0010 0000 addi.b #$10, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value+#$10 04C390: 4E75 rts04C404: 082D 0004 39CD btst #$4, ($39cd,A5) 04C40A: 6700 0008 beq $4c414 ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4c414 subroutine 04C40E: 522C 00C6 addq.b #1, ($c6,A4) ; [A4+$c6] value+1 04C412: 4E75 rts04C392: 082D 0007 39CD btst #$7, ($39cd,A5) 04C398: 6700 0012 beq $4c3ac ; if 8th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time 04C39C: 206C 00C0 movea.l ($c0,A4), A0 ; else A0=A4+$c0 04C3A0: 7000 moveq #$0, D0 ; D0=0 04C3A2: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04C3A6: 0430 0010 0000 subi.b #$10, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value-#$10 04C3AC: 4E75 rts04C414: 082D 0005 39CD btst #$5, ($39cd,A5) 04C41A: 6700 0016 beq $4c432 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4c432 subroutine 04C41E: 522C 00C5 addq.b #1, ($c5,A4) 04C422: 0C2C 0004 00C5 cmpi.b #$4, ($c5,A4) 04C428: 6300 0006 bls $4c430 ; if [A4+$c5] value+1 <=#$4 then end the subroutine ahead of time 04C42C: 422C 00C5 clr.b ($c5,A4) ; else [A4+$c5] value=0 04C430: 4E75 rts04C432: 082D 0006 39CD btst #$6, ($39cd,A5) 04C438: 6700 0016 beq $4c450 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4c450 subroutine 04C43C: 522C 00C4 addq.b #1, ($c4,A4) 04C440: 0C2C 0019 00C4 cmpi.b #$19, ($c4,A4) 04C446: 6300 0006 bls $4c44e ; if [A4+$c4] value+1 <=#$19 then end the subroutine ahead of time 04C44A: 422C 00C4 clr.b ($c4,A4) ; else [A4+$c4] value=0 04C44E: 4E75 rts04C450: 082D 0007 39CD btst #$7, ($39cd,A5) 04C456: 6700 0004 beq $4c45c ; if 8th bit of [A5+$39cd] value is equal to 0 then goto $4c45c subroutine 04C45A: 4E75 rts 04C45C: 082D 0002 39F6 btst #$2, ($39f6,A5) 04C462: 6700 000A beq $4c46e ; if 3rd bit of [A5+$39f6] value is equal to 0 then goto $4c46e subroutine 04C466: 4EBA 0056 jsr ($56,PC) ; ($4c4be) 04C46A: 4E71 nop 04C46C: 4E75 rts 04C46E: 082D 0004 39E3 btst #$4, ($39e3,A5) 04C474: 6700 0008 beq $4c47e ; if 5th bit of [A5+$39e3] value is equal to 0 then goto $4c47e subroutine 04C478: 532C 00C6 subq.b #1, ($c6,A4) ; [A4+$c6] value-1 04C47C: 4E75 rts 04C47E: 082D 0005 39E3 btst #$5, ($39e3,A5) 04C484: 6700 0012 beq $4c498 ; if 6th bit of [A5+$39e3] value is equal to 0 then goto $4c498 subroutine 04C488: 532C 00C5 subq.b #1, ($c5,A4) 04C48C: 6400 0008 bcc $4c496 ; if [A4+$c5] value >=1 then end the subroutine ahead of time 04C490: 197C 0004 00C5 move.b #$4, ($c5,A4) ; else [A4+$c5] value=4 04C496: 4E75 rts 04C498: 082D 0006 39E3 btst #$6, ($39e3,A5) 04C49E: 6700 0012 beq $4c4b2 ; if 7th bit of [A5+$39e3] value is equal to 0 then goto $4c4b2 subroutine 04C4A2: 532C 00C4 subq.b #1, ($c4,A4) 04C4A6: 6400 0008 bcc $4c4b0 ; if [A4+$c4] value >=1 then end the subroutine ahead of time 04C4AA: 197C 0019 00C4 move.b #$19, ($c4,A4) ; else [A4+$c5] value=#$19 04C4B0: 4E75 rts 04C4B2: 082D 0007 39E3 btst #$7, ($39e3,A5) 04C4B8: 6700 0002 beq $4c4bc ; if 8th bit of [A5+$39e3] value is equal to 0 then goto $4c4bc subroutine 04C4BC: 4E75 rts04C4BE: 4EBA 0014 jsr ($14,PC) ; ($4c4d4) ; skip to next subroutine right after start of this one 04C4C2: 4E71 nop 04C4C4: 2040 movea.l D0, A0 ; A0=((#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000))+(([A4+$c6] value)<<4) 04C4C6: 226C 00C0 movea.l ($c0,A4), A1 04C4CA: 700F moveq #$f, D0 ; D0=#$f 04C4CC: 12D8 move.b (A0)+, (A1)+ ; [A4+$c1] value=[((#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000))+(([A4+$c6] value)<<4)+1] value 04C4CE: 51C8 FFFC dbra D0, $4c4cc ; D0-1, if D0 <> 0 jump back to $4c4cc 04C4D2: 4E75 rts 04C4D4: 203C 0020 1000 move.l #$201000, D0 ; D0=#$201000 04C4DA: 7200 moveq #$0, D1 ; D1=#$0 04C4DC: 122C 00C4 move.b ($c4,A4), D1 04C4E0: C2FC 5000 mulu.w #$5000, D1 ; D1=([A4+$c4] value)*#$5000 04C4E4: D081 add.l D1, D0 ; D0=#$201000+(([A4+$c4] value)*#$5000) 04C4E6: 7200 moveq #$0, D1 ; D1=0 04C4E8: 122C 00C5 move.b ($c5,A4), D1 04C4EC: C2FC 1000 mulu.w #$1000, D1 ; D1=([A4+$c5] value)*#$1000 04C4F0: D081 add.l D1, D0 ; D0=(#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000) 04C4F2: 7200 moveq #$0, D1 ; D1=0 04C4F4: 122C 00C6 move.b ($c6,A4), D1 04C4F8: E989 lsl.l #4, D1 ; D1=([A4+$c6] value)<<4 04C4FA: D081 add.l D1, D0 ; D0=((#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000))+(([A4+$c6] value)<<4) 04C4FC: 4E75 rts
avatar

35

The 04C4FE subroutine turned out to be too large piece of code, so I had to shatter it by three parts.

04C4FE: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) 04C504: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) 04C50A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04C50E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value 04C512: 4EB9 0000 5FDE jsr $5fde.l 04C518: 207C 0006 E7D8 movea.l #$6e7d8, A0 ; A0=#$6e7d8 04C51E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C522: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C528: 4EB9 0000 5F0C jsr $5f0c.l 04C52E: 566C 00D4 addq.w #3, ($d4,A4) 04C532: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+3 04C536: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value 04C53A: 4EB9 0000 5FDE jsr $5fde.l 04C540: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C544: 122C 0070 move.b ($70,A4), D1 ; D1=[A4+$70] value 04C548: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C54E: 4EB9 0000 5F60 jsr $5f60.l 04C554: 566C 00D4 addq.w #3, ($d4,A4) ; [A4+$cc] value+6 04C558: 7000 moveq #$0, D0 ; D0=0 04C55A: 102C 0070 move.b ($70,A4), D0 ; D0=[A4+$70] value 04C55E: E948 lsl.w #4, D0 ; D0=[A4+$70] value<<4 04C560: 43F9 0007 BD00 lea $7bd00.l, A1 04C566: D2C0 adda.w D0, A1 ; A1=$7bd00+[[A4+$70] value<<4] 04C568: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+6 04C56C: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value 04C570: 4EB9 0000 5FDE jsr $5fde.l 04C576: 2049 movea.l A1, A0 ; A0=$7bd00+[[A4+$70] value<<4] 04C578: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C57C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C582: 4EB9 0000 5F0C jsr $5f0c.l 04C588: 5D6C 00D4 subq.w #6, ($d4,A4) 04C58C: 526C 00D6 addq.w #1, ($d6,A4) 04C590: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value 04C594: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1 04C598: 4EB9 0000 5FDE jsr $5fde.l 04C59E: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[$6e7dc] 04C5A4: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C5A8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C5AE: 4EB9 0000 5F0C jsr $5f0c.l 04C5B4: 5A6C 00D4 addq.w #5, ($d4,A4) 04C5B8: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+5 04C5BC: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1 04C5C0: 4EB9 0000 5FDE jsr $5fde.l 04C5C6: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C5CA: 122C 00BC move.b ($bc,A4), D1 ; lowest byte of D1=[A4+$bc] value 04C5CE: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C5D4: 4EB9 0000 5F60 jsr $5f60.l 04C5DA: 566C 00D4 addq.w #3, ($d4,A4) 04C5DE: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+8 04C5E2: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1 04C5E6: 4EB9 0000 5FDE jsr $5fde.l 04C5EC: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[$6e7e2] 04C5F2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C5F6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C5FC: 4EB9 0000 5F0C jsr $5f0c.l 04C602: 586C 00D4 addq.w #4, ($d4,A4) 04C606: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+12 04C60A: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1 04C60E: 4EB9 0000 5FDE jsr $5fde.l 04C614: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C618: 122C 00D1 move.b ($d1,A4), D1 ; lowest byte of D1=[A4+$d1] value 04C61C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C622: 4EB9 0000 5F60 jsr $5f60.l 04C628: 046C 000C 00D4 subi.w #$c, ($d4,A4) 04C62E: 546C 00D6 addq.w #2, ($d6,A4) 04C632: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value 04C636: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+3 04C63A: 4EB9 0000 5FDE jsr $5fde.l 04C640: 207C 0006 E930 movea.l #$6e930, A0 ; A0=[$6e930] 04C646: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C64A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C650: 4EB9 0000 5F0C jsr $5f0c.l 04C656: 526C 00D6 addq.w #1, ($d6,A4) 04C65A: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value 04C65E: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+4 04C662: 4EB9 0000 5FDE jsr $5fde.l 04C668: 207C 0006 E93A movea.l #$6e93a, A0 ; A0=[$6e93a] 04C66E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C672: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C678: 4EB9 0000 5F0C jsr $5f0c.l 04C67E: 526C 00D6 addq.w #1, ($d6,A4) 04C682: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value 04C686: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+5 04C68A: 4EB9 0000 5FDE jsr $5fde.l 04C690: 207C 0006 E944 movea.l #$6e944, A0 ; A0=[$6e944] 04C696: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C69A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C6A0: 4EB9 0000 5F0C jsr $5f0c.l 04C6A6: 526C 00D6 addq.w #1, ($d6,A4) 04C6AA: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value 04C6AE: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+6 04C6B2: 4EB9 0000 5FDE jsr $5fde.l 04C6B8: 207C 0006 E7F2 movea.l #$6e7f2, A0 ; A0=[$6e7f2] 04C6BE: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C6C2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C6C8: 4EB9 0000 5F0C jsr $5f0c.l 04C6CE: 066C 0009 00D4 addi.w #$9, ($d4,A4) 04C6D4: 576C 00D6 subq.w #3, ($d6,A4) 04C6D8: 2C6C 00C0 movea.l ($c0,A4), A6 ; A6=A4+$c0 04C6DC: 7E0F moveq #$f, D7 ; D7=#$f 04C6DE: 7C03 moveq #$3, D6 ; D6=#$3 04C6E0: 7A00 moveq #$0, D5 ; D5=#$0 04C6E2: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+9 04C6E6: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+3 04C6EA: 4EB9 0000 5FDE jsr $5fde.l 04C6F0: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C6F4: BA2C 00D0 cmp.b ($d0,A4), D5 04C6F8: 6600 0006 bne $4c700 ; if [A4+$d0] value=0 then skip next operation 04C6FC: 0040 8000 ori.w #$8000, D0 ; else D0=#$8000|#$f00=#$8f00 04C700: 121E move.b (A6)+, D1 ; D1=(A6) value+1 04C702: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C708: 4EB9 0000 5F60 jsr $5f60.l 04C70E: 566C 00D4 addq.w #3, ($d4,A4) ; [A4+$d4] value=[A4+$cc] value+12 04C712: 5346 subq.w #1, D6 ; D6-1 04C714: 6A00 000E bpl $4c724 ; if D6>0 then skip to $4c724 04C718: 046C 000C 00D4 subi.w #$c, ($d4,A4) ; else [A4+$d4] value=[A4+$cc] value 04C71E: 526C 00D6 addq.w #1, ($d6,A4) ; [A4+$d6]=[A4+$ce] value+4 04C722: 7C03 moveq #$3, D6 ; D6=3 04C724: 5205 addq.b #1, D5 ; D5+1 04C726: 51CF FFBA dbra D7, $4c6e2 ; D7-1, if D7 <> 0 jump back to $4c6e2 04C72A: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04C730: 526C 00D6 addq.w #1, ($d6,A4) 04C734: 7000 moveq #$0, D0 ; D0=0 04C736: 102D 3A5E move.b ($3a5e,A5), D0 04C73A: D040 add.w D0, D0 04C73C: D040 add.w D0, D0 ; D0=[A5+$3a5e] value*4 04C73E: 41FA 05C0 lea ($5c0,PC) ; ($4cd00), A0 04C742: 4E71 nop 04C744: 2E30 0000 move.l (A0,D0.w), D7 ; D7=([A5+$3a5e] value*4)+[$4cd00] value 04C748: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C74C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04C750: 4EB9 0000 5FDE jsr $5fde.l 04C756: 2047 movea.l D7, A0 ; A0=[([A5+$3a5e] value*4)+[$4cd00]] 04C758: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C75C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C762: 4EB9 0000 5F0C jsr $5f0c.l 04C768: 526C 00D6 addq.w #1, ($d6,A4) 04C76C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C770: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04C774: 4EB9 0000 5FDE jsr $5fde.l 04C77A: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[$6e7dc] 04C780: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C784: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C78A: 4EB9 0000 5F0C jsr $5f0c.l 04C790: 5A6C 00D4 addq.w #5, ($d4,A4) 04C794: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4 04C798: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04C79C: 4EB9 0000 5FDE jsr $5fde.l 04C7A2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C7A6: 122D 3A5F move.b ($3a5f,A5), D1 ; D1=[A5+$3a5f] 04C7AA: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C7B0: 4EB9 0000 5F60 jsr $5f60.l 04C7B6: 5B6C 00D4 subq.w #5, ($d4,A4) 04C7BA: 526C 00D6 addq.w #1, ($d6,A4) 04C7BE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C7C2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04C7C6: 4EB9 0000 5FDE jsr $5fde.l 04C7CC: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[$6e7e2] 04C7D2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C7D6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C7DC: 4EB9 0000 5F0C jsr $5f0c.l 04C7E2: 586C 00D4 addq.w #4, ($d4,A4) 04C7E6: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-5 04C7EA: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04C7EE: 4EB9 0000 5FDE jsr $5fde.l 04C7F4: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C7F8: 122D 3A61 move.b ($3a61,A5), D1 ; D1=[A5+$3a61] 04C7FC: 243C 0020 0000 move.l #$200000, D204C802: 4EB9 0000 5F60 jsr $5f60.l 04C808: 596C 00D4 subq.w #4, ($d4,A4) 04C80C: 526C 00D6 addq.w #1, ($d6,A4) 04C810: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C814: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4 04C818: 4EB9 0000 5FDE jsr $5fde.l 04C81E: 207C 0006 E806 movea.l #$6e806, A0 ; A0=[$6e806] 04C824: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C828: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C82E: 4EB9 0000 5F0C jsr $5f0c.l 04C834: 506C 00D4 addq.w #8, ($d4,A4) 04C838: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-1 04C83C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4 04C840: 4EB9 0000 5FDE jsr $5fde.l 04C846: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C84A: 122D 3A62 move.b ($3a62,A5), D1 ; D1=[A5+$3a62] value 04C84E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C854: 4EB9 0000 5F60 jsr $5f60.l 04C85A: 516C 00D4 subq.w #8, ($d4,A4) 04C85E: 526C 00D6 addq.w #1, ($d6,A4) 04C862: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C866: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4 04C86A: 4EB9 0000 5FDE jsr $5fde.l 04C870: 207C 0006 E810 movea.l #$6e810, A0 ; A0=[$6e810] 04C876: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C87A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C880: 4EB9 0000 5F0C jsr $5f0c.l 04C886: 506C 00D4 addq.w #8, ($d4,A4) 04C88A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-1 04C88E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4 04C892: 4EB9 0000 5FDE jsr $5fde.l 04C898: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C89C: 122D 3A63 move.b ($3a63,A5), D1 ; D1=[A5+$3a63] value 04C8A0: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C8A6: 4EB9 0000 5F60 jsr $5f60.l 04C8AC: 516C 00D4 subq.w #8, ($d4,A4) 04C8B0: 526C 00D6 addq.w #1, ($d6,A4) 04C8B4: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C8B8: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+5 04C8BC: 4EB9 0000 5FDE jsr $5fde.l 04C8C2: 207C 0006 E842 movea.l #$6e842, A0 ; A0=[#$6e842] 04C8C8: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C8CC: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C8D2: 4EB9 0000 5F0C jsr $5f0c.l 04C8D8: 066C 000A 00D4 addi.w #$a, ($d4,A4) 04C8DE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+1 04C8E2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+5 04C8E6: 4EB9 0000 5FDE jsr $5fde.l 04C8EC: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C8F0: 122D 3A5A move.b ($3a5a,A5), D1 ; D1=[A5+$3a5a] value 04C8F4: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C8FA: 4EB9 0000 5F60 jsr $5f60.l 04C900: 046C 000A 00D4 subi.w #$a, ($d4,A4) 04C906: 526C 00D6 addq.w #1, ($d6,A4) 04C90A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C90E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+6 04C912: 4EB9 0000 5FDE jsr $5fde.l 04C918: 207C 0006 E84E movea.l #$6e84e, A0 ; A0=[$6e84e] 04C91E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C922: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C928: 4EB9 0000 5F0C jsr $5f0c.l 04C92E: 066C 000A 00D4 addi.w #$a, ($d4,A4) 04C934: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+1 04C938: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+6 04C93C: 4EB9 0000 5FDE jsr $5fde.l 04C942: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C946: 122D 3A64 move.b ($3a64,A5), D1 ; D1=[A5+$3a64] value 04C94A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C950: 4EB9 0000 5F60 jsr $5f60.l 04C956: 046C 000A 00D4 subi.w #$a, ($d4,A4) 04C95C: 526C 00D6 addq.w #1, ($d6,A4) 04C960: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C964: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7 04C968: 4EB9 0000 5FDE jsr $5fde.l 04C96E: 207C 0006 E85A movea.l #$6e85a, A0 ; A0=[$6e85a] 04C974: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C978: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C97E: 4EB9 0000 5F0C jsr $5f0c.l 04C984: 5A6C 00D4 addq.w #5, ($d4,A4) 04C988: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4 04C98C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7 04C990: 4EB9 0000 5FDE jsr $5fde.l 04C996: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C99A: 322D 0118 move.w ($118,A5), D1 ; D1=[A5+$118] value 04C99E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C9A4: 4EB9 0000 5F94 jsr $5f94.l 04C9AA: 586C 00D4 addq.w #4, ($d4,A4) 04C9AE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04C9B2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7 04C9B6: 4EB9 0000 5FDE jsr $5fde.l 04C9BC: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C9C0: 322D 011A move.w ($11a,A5), D1 ; D1=[A5+$11a] value 04C9C4: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04C9CA: 4EB9 0000 5F94 jsr $5f94.l 04C9D0: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04C9D6: 526C 00D6 addq.w #1, ($d6,A4) 04C9DA: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04C9DE: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+8 04C9E2: 4EB9 0000 5FDE jsr $5fde.l 04C9E8: 207C 0006 E860 movea.l #$6e860, A0 ; A0=[$6e860] 04C9EE: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04C9F2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04C9F8: 4EB9 0000 5F0C jsr $5f0c.l 04C9FE: 5A6C 00D4 addq.w #5, ($d4,A4) 04CA02: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4 04CA06: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+8 04CA0A: 4EB9 0000 5FDE jsr $5fde.l 04CA10: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CA14: 322D 0318 move.w ($318,A5), D1 ; D1=[A5+$318] value 04CA18: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CA1E: 4EB9 0000 5F94 jsr $5f94.l 04CA24: 586C 00D4 addq.w #4, ($d4,A4) 04CA28: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04CA2C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+8 04CA30: 4EB9 0000 5FDE jsr $5fde.l 04CA36: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CA3A: 322D 031A move.w ($31a,A5), D1 ; D1=[A5+$31a] value 04CA3E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CA44: 4EB9 0000 5F94 jsr $5f94.l 04CA4A: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04CA50: 526C 00D6 addq.w #1, ($d6,A4) 04CA54: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04CA58: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9 04CA5C: 4EB9 0000 5FDE jsr $5fde.l 04CA62: 207C 0006 E866 movea.l #$6e866, A0 ; A0=[$6e866] 04CA68: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CA6C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CA72: 4EB9 0000 5F0C jsr $5f0c.l 04CA78: 5A6C 00D4 addq.w #5, ($d4,A4) 04CA7C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4 04CA80: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9 04CA84: 4EB9 0000 5FDE jsr $5fde.l 04CA8A: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CA8E: 322D 0120 move.w ($120,A5), D1 ; D1=[A5+$120] 04CA92: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CA98: 4EB9 0000 5F94 jsr $5f94.l 04CA9E: 586C 00D4 addq.w #4, ($d4,A4) 04CAA2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04CAA6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9 04CAAA: 4EB9 0000 5FDE jsr $5fde.l 04CAB0: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CAB4: 322D 0122 move.w ($122,A5), D1 ; D1=[A5+$122] value 04CAB8: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CABE: 4EB9 0000 5F94 jsr $5f94.l 04CAC4: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04CACA: 526C 00D6 addq.w #1, ($d6,A4) 04CACE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9 04CAD2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+10 04CAD6: 4EB9 0000 5FDE jsr $5fde.l 04CADC: 207C 0006 E86C movea.l #$6e86c, A0 ; A0=[$6e86c] 04CAE2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CAE6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CAEC: 4EB9 0000 5F0C jsr $5f0c.l 04CAF2: 5A6C 00D4 addq.w #5, ($d4,A4) 04CAF6: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4 04CAFA: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+10 04CAFE: 4EB9 0000 5FDE jsr $5fde.l 04CB04: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CB08: 322D 0320 move.w ($320,A5), D1 ; D1=[A5+$320] value 04CB0C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CB12: 4EB9 0000 5F94 jsr $5f94.l 04CB18: 586C 00D4 addq.w #4, ($d4,A4) 04CB1C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04CB20: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+10 04CB24: 4EB9 0000 5FDE jsr $5fde.l 04CB2A: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CB2E: 322D 0322 move.w ($322,A5), D1 ; D1=[A5+$322] value 04CB32: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CB38: 4EB9 0000 5F94 jsr $5f94.l 04CB3E: 586C 00D4 addq.w #4, ($d4,A4) 04CB42: 046C 000A 00D6 subi.w #$a, ($d6,A4) 04CB48: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+4 04CB4C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value 04CB50: 4EB9 0000 5FDE jsr $5fde.l 04CB56: 207C 0006 E7D8 movea.l #$6e7d8, A0 ; A0=[$6e7d8] 04CB5C: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CB60: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CB66: 4EB9 0000 5F0C jsr $5f0c.l 04CB6C: 566C 00D4 addq.w #3, ($d4,A4) 04CB70: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+7 04CB74: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value 04CB78: 4EB9 0000 5FDE jsr $5fde.l 04CB7E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CB82: 122C 00C4 move.b ($c4,A4), D1 ; D1=[A4+$c4] value 04CB86: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CB8C: 4EB9 0000 5F60 jsr $5f60.l 04CB92: 576C 00D4 subq.w #3, ($d4,A4) 04CB96: 526C 00D6 addq.w #1, ($d6,A4) 04CB9A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+4 04CB9E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04CBA2: 4EB9 0000 5FDE jsr $5fde.l 04CBA8: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[$6e7dc] 04CBAE: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CBB2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CBB8: 4EB9 0000 5F0C jsr $5f0c.l 04CBBE: 5A6C 00D4 addq.w #5, ($d4,A4) 04CBC2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9 04CBC6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04CBCA: 4EB9 0000 5FDE jsr $5fde.l 04CBD0: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CBD4: 122C 00C5 move.b ($c5,A4), D1 ; D1=[A4+$c5] value 04CBD8: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CBDE: 4EB9 0000 5F60 jsr $5f60.l 04CBE4: 5B6C 00D4 subq.w #5, ($d4,A4) 04CBE8: 526C 00D6 addq.w #1, ($d6,A4) 04CBEC: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+4 04CBF0: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04CBF4: 4EB9 0000 5FDE jsr $5fde.l 04CBFA: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[$6e7e2]04CC00: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CC04: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CC0A: 4EB9 0000 5F0C jsr $5f0c.l 04CC10: 586C 00D4 addq.w #4, ($d4,A4) 04CC14: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+8 04CC18: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04CC1C: 4EB9 0000 5FDE jsr $5fde.l 04CC22: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CC26: 122C 00C6 move.b ($c6,A4), D1 ; D1=[A4+$c6] value 04CC2A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CC30: 4EB9 0000 5F60 jsr $5f60.l 04CC36: 576C 00D4 subq.w #3, ($d4,A4) 04CC3A: 5A6C 00D6 addq.w #5, ($d6,A4) 04CC3E: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5 04CC42: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7 04CC46: 4EB9 0000 5FDE jsr $5fde.l 04CC4C: 207C 0006 E872 movea.l #$6e872, A0 ; A0=[$6e872] 04CC52: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CC56: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CC5C: 4EB9 0000 5F0C jsr $5f0c.l 04CC62: 302D 0118 move.w ($118,A5), D0 ; D0=[A5+$118] value 04CC66: 906D 0318 sub.w ($318,A5), D0 ; D0=[A5+$118] value-[A5+$318] value 04CC6A: 4EB9 0000 2F94 jsr $2f94.l 04CC70: 1940 00C8 move.b D0, ($c8,A4) ; [A4+$c8] value=([A5+$118] value-[A5+$318] value) or -([A5+$118] value-[A5+$318] value) 04CC74: 566C 00D4 addq.w #3, ($d4,A4) 04CC78: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+8 04CC7C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7 04CC80: 4EB9 0000 5FDE jsr $5fde.l 04CC86: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CC8A: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value 04CC8E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CC94: 4EB9 0000 5F60 jsr $5f60.l 04CC9A: 576C 00D4 subq.w #3, ($d4,A4) 04CC9E: 546C 00D6 addq.w #2, ($d6,A4) 04CCA2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5 04CCA6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9 04CCAA: 4EB9 0000 5FDE jsr $5fde.l 04CCB0: 207C 0006 E876 movea.l #$6e876, A0 ; A0=[$6e876] 04CCB6: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CCBA: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04CCC0: 4EB9 0000 5F0C jsr $5f0c.l 04CCC6: 302D 0120 move.w ($120,A5), D0 ; D0=[A5+$120] value 04CCCA: 906D 0320 sub.w ($320,A5), D0 ; D0=[A5+$120] value-[A5+$320] value 04CCCE: 4EB9 0000 2F94 jsr $2f94.l 04CCD4: 1940 00C8 move.b D0, ($c8,A4) ; [A4+$c8] value=([A5+$120] value-[A5+$320] value) or -([A5+$120] value-[A5+$320] value) 04CCD8: 566C 00D4 addq.w #3, ($d4,A4) 04CCDC: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+8 04CCE0: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9 04CCE4: 4EB9 0000 5FDE jsr $5fde.l 04CCEA: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00 04CCEE: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value 04CCF2: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04CCF8: 4EB9 0000 5F60 jsr $5f60.l 04CCFE: 4E75 rts
avatar

36

005F60: 1601 move.b D1, D3 ; D3=[A4+$70] value 005F62: 0241 00F0 andi.w #$f0, D1 005F66: E809 lsr.b #4, D1 ; D1=([A4+$70] value&#$f0)<<4 005F68: 103B 101A move.b ($1a,PC,D1.w), D0 ; lowest byte of D0=(([A4+$70] value&#$f0)<<4)+PC+$1a 005F6C: 23C0 003C 0000 move.l D0, $3c0000.l ; send (high 2 bytes of swapped (((old [A4+$d4] value+3)<<5)+[A4+$d6] value+#$7002)+#$f00+((([A4+$70] value&#$f0)<<4)+PC+$1a)) value to REG_VRAMADDR 005F72: 0243 000F andi.w #$f, D3 005F76: 103B 300C move.b ($c,PC,D3.w), D0 ; lowest byte of D0=([A4+$70] value&3)+PC+$c 005F7A: D082 add.l D2, D0 ; D0=(high 2 bytes of swapped (((old [A4+$d4] value+3)<<5)+[A4+$d6] value+#$7002)+#$f00+(([A4+$70] value&3)+PC+$c))+#$200000 005F7C: 23C0 003C 0000 move.l D0, $3c0000.l ; send ((high 2 bytes of swapped (((old [A4+$d4] value+3)<<5)+[A4+$d6] value+#$7002)+#$f00+(([A4+$70] value&3)+PC+$c))+#$200000) value to REG_VRAMADDR 005F82: 4E75 rts005F94: 3601 move.w D1, D3 ; D3=[A5+$118] value 005F96: E049 lsr.w #8, D1 ; D1=[A5+$118] value>>8 005F98: E809 lsr.b #4, D1 ; lowest byte of D1=(lowest byte of [A5+$118] value)>>12 005F9A: 103B 10E8 move.b (-$18,PC,D1.w), D0 ; lowest byte of D0=high byte of ([A5+$118] value>>8)+((lowest byte of [A5+$118] value)>>12)+PC-$18 005F9E: 23C0 003C 0000 move.l D0, $3c0000.l ; send (high byte of ([A5+$118] value>>8)+((lowest byte of [A5+$118] value)>>12)+PC-$18) to REG_VRAMADDR 005FA4: 3203 move.w D3, D1 ; D1=[A5+$118] value 005FA6: 0241 0F00 andi.w #$f00, D1 ; D1=[A5+$118] value&#$f00 005FAA: E049 lsr.w #8, D1 ; D1=([A5+$118] value&#$f00)>>8 005FAC: 103B 10D6 move.b (-$2a,PC,D1.w), D0 ; D0=(([A5+$118] value&#$f00)>>8)+PC-$2a 005FB0: D082 add.l D2, D0 ; D0=(([A5+$118] value&#$f00)>>8)+PC-$2a+#$200000 005FB2: 23C0 003C 0000 move.l D0, $3c0000.l ; send ((([A5+$118] value&#$f00)>>8)+PC-$2a+#$200000) to REG_VRAMADDR 005FB8: 3203 move.w D3, D1 ; D1=[A5+$118] value 005FBA: 0241 00F0 andi.w #$f0, D1 ; D1=[A5+$118] value&#$f0 005FBE: E809 lsr.b #4, D1 ; D1=([A5+$118] value&#$f0)>>4 005FC0: 103B 10C2 move.b (-$3e,PC,D1.w), D0 ; D0=(([A5+$118] value&#$f0)>>4)+PC-$3e 005FC4: D082 add.l D2, D0 ; D0=(([A5+$118] value&#$f0)>>4)+PC-$3e+#$200000 005FC6: 23C0 003C 0000 move.l D0, $3c0000.l ; send ((([A5+$118] value&#$f0)>>4)+PC-$3e+#$200000) to REG_VRAMADDR 005FCC: 0243 000F andi.w #$f, D3 005FD0: 103B 30B2 move.b (-$4e,PC,D3.w), D0 ; D0=([A5+$118] value&#$f)+PC-$4e 005FD4: D082 add.l D2, D0 ; D0=([A5+$118] value&#$f)+PC-$4e+#$200000 005FD6: 23C0 003C 0000 move.l D0, $3c0000.l ; send (([A5+$118] value&#$f)+PC-$4e+#$200000) to REG_VRAMADDR 005FDC: 4E75 rts002F94: 4A40 tst.w D0 002F96: 6A02 bpl $2f9a 002F98: 4440 neg.w D0 002F9A: 4E75 rts
avatar

37

04CD6E: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6 04CD74: 4EBA 0034 jsr ($34,PC) ; ($4cdaa) 04CD78: 4E71 nop 04CD7A: 4EBA 026A jsr ($26a,PC) ; ($4cfe6) 04CD7E: 4E71 nop 04CD80: 4EBA 0348 jsr ($348,PC) ; ($4d0ca) 04CD84: 4E71 nop 04CD86: 4EBA 0224 jsr ($224,PC) ; ($4cfac) 04CD8A: 4E71 nop 04CD8C: 4E75 rts04CDAA: 102D 39CD move.b ($39cd,A5), D0 ; D0=[A5+$39cd] value 04CDAE: 0240 000F andi.w #$f, D0 ; D0=[A5+$39cd] value&#$f 04CDB2: 41FA 0030 lea ($30,PC) ; ($4cde4), A0 04CDB6: 4E71 nop 04CDB8: 7200 moveq #$0, D1 ; D1=0 04CDBA: 1230 0000 move.b (A0,D0.w), D1 ; D1=[$4cde4] value+([A5+$39cd] value&#$f) 04CDBE: 6B00 0022 bmi $4cde2 ; if ([$4cde4] value+([A5+$39cd] value&#$f)) value is negative then end the subroutine ahead of time 04CDC2: D241 add.w D1, D1 04CDC4: D241 add.w D1, D1 ; else D1=([$4cde4] value+([A5+$39cd] value&#$f))*4 04CDC6: 41FA 002C lea ($2c,PC) ; ($4cdf4), A0 04CDCA: 4E71 nop 04CDCC: 082D 0002 39F5 btst #$2, ($39f5,A5) 04CDD2: 6700 0008 beq $4cddc ; if 3rd bit of [A5+$39f5] value is equal to 0, then skip next 2 steps 04CDD6: 41FA 002C lea ($2c,PC) ; ($4ce04), A0 04CDDA: 4E71 nop 04CDDC: 2070 1000 movea.l (A0,D1.w), A0 ; A0=(([$4cde4] value+([A5+$39cd] value&#$f))*4)+[$4cdf4] value or (([$4cde4] value+([A5+$39cd] value&#$f))*4)+[$4ce04] value 04CDE0: 4E90 jsr (A0) 04CDE2: 4E75 rts04CFE6: 082D 0000 39F5 btst #$0, ($39f5,A5) 04CFEC: 6600 006E bne $4d05c ; if 1st bit of [A5+$39f5] value is equal to 1 then goto $4d05c subroutine 04CFF0: 082D 0004 39CD btst #$4, ($39cd,A5) 04CFF6: 6700 0012 beq $4d00a ; else if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d00a subroutine 04CFFA: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0] 04CFFE: 7000 moveq #$0, D0 ; D0=0 04D000: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04D004: 5230 0000 addq.b #1, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)+#1 04D008: 4E75 rts 04D00A: 082D 0005 39CD btst #$5, ($39cd,A5) 04D010: 6700 0012 beq $4d024 ; else if 6th bit of [A5+$39cd] value is equal to 0 then goto $4d024 subroutine 04D014: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0] 04D018: 7000 moveq #$0, D0 ; D0=0 04D01A: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04D01E: 5330 0000 subq.b #1, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)-#1 04D022: 4E75 rts 04D024: 082D 0006 39CD btst #$6, ($39cd,A5) 04D02A: 6700 0014 beq $4d040 ; else if 7th bit of [A5+$39cd] value is equal to 0 then goto $4d040 subroutine 04D02E: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0] 04D032: 7000 moveq #$0, D0 ; D0=0 04D034: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04D038: 0630 0010 0000 addi.b #$10, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)+#$10 04D03E: 4E75 rts 04D040: 082D 0007 39CD btst #$7, ($39cd,A5) 04D046: 6700 0012 beq $4d05a ; else if 8th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time 04D04A: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0] 04D04E: 7000 moveq #$0, D0 ; D0=0 04D050: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value 04D054: 0430 0010 0000 subi.b #$10, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)-#$10 04D05A: 4E75 rts 04D05C: 082D 0001 39F6 btst #$1, ($39f6,A5) 04D062: 6700 0026 beq $4d08a ; if 2nd bit of [A5+$39f6] value is equal to 0 then goto $4d08a subroutine 04D066: 06AC 0000 0400 00C0 addi.l #$400, ($c0,A4)) ; else [A4+$c0] value+#$400 04D06E: 522C 0070 addq.b #1, ($70,A4) ; [A4+$70] value+1 04D072: 0C2C 0019 0070 cmpi.b #$19, ($70,A4) 04D078: 6300 004E bls $4d0c8 ; if [A4+$70] value<=#$19 then end all subroutines in this quote 04D07C: 532C 0070 subq.b #1, ($70,A4) 04D080: 04AC 0000 0400 00C0 subi.l #$400, ($c0,A4) ; else restore old values of [A4+$c0] and [A4+$70] 04D088: 4E75 rts 04D08A: 082D 0003 39F6 btst #$3, ($39f6,A5) 04D090: 6700 0020 beq $4d0b2 ; if 4th bit of [A5+$39f6] value is equal to 0 then goto $4d0b2 subroutine 04D094: 04AC 0000 0400 00C0 subi.l #$400, ($c0,A4) ; else [A4+$c0] value-#$400 04D09C: 532C 0070 subq.b #1, ($70,A4) ; [A4+$70] value-1 04D0A0: 6400 0026 bcc $4d0c8 ; if [A4+$70] value>=1 then end all subroutines in this quote 04D0A4: 522C 0070 addq.b #1, ($70,A4) 04D0A8: 06AC 0000 0400 00C0 addi.l #$400, ($c0,A4) ; else restore old values of [A4+$c0] and [A4+$70] 04D0B0: 4E75 rts 04D0B2: 082D 0004 39CD btst #$4, ($39cd,A5) 04D0B8: 6700 0004 beq $4d0be ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d0be subroutine 04D0BC: 4E75 rts 04D0BE: 082D 0005 39CD btst #$5, ($39cd,A5) 04D0C4: 6700 0002 beq $4d0c8 ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d0c8 subroutine 04D0C8: 4E75 rts04D0CA: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) 04D0D0: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) 04D0D6: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D0DA: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value 04D0DE: 4EB9 0000 5FDE jsr $5fde.l 04D0E4: 207C 0006 E7D8 movea.l #$6e7d8, A0 ; A0=[$6e7d8] 04D0EA: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D0EE: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D0F4: 4EB9 0000 5F0C jsr $5f0c.l 04D0FA: 566C 00D4 addq.w #3, ($d4,A4) 04D0FE: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+3 04D102: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value 04D106: 4EB9 0000 5FDE jsr $5fde.l 04D10C: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D110: 122C 0070 move.b ($70,A4), D1 ; D1=[A4+$70] value 04D114: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D11A: 4EB9 0000 5F60 jsr $5f60.l 04D120: 576C 00D4 subq.w #3, ($d4,A4) 04D124: 526C 00D6 addq.w #1, ($d6,A4) 04D128: 7000 moveq #$0, D0 ; D0=0 04D12A: 102C 0070 move.b ($70,A4), D0 ; D0=[A4+$70] value 04D12E: E948 lsl.w #4, D0 ; D0=[A4+$70] value<<4 04D130: 43F9 0007 BD00 lea $7bd00.l, A1 ; A1=[$7bd00] 04D136: D2C0 adda.w D0, A1 ; A1=[$7bd00 +([A4+$70] value<<4)] 04D138: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D13C: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+1 04D140: 4EB9 0000 5FDE jsr $5fde.l 04D146: 2049 movea.l A1, A0 ; A0=[$7bd00 +([A4+$70] value<<4)] 04D148: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D14C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D152: 4EB9 0000 5F0C jsr $5f0c.l 04D158: 526C 00D6 addq.w #1, ($d6,A4) 04D15C: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D160: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+2 04D164: 4EB9 0000 5FDE jsr $5fde.l 04D16A: 207C 0006 E806 movea.l #$6e806, A0 ; A0=[$6e806] 04D170: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D174: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D17A: 4EB9 0000 5F0C jsr $5f0c.l 04D180: 506C 00D4 addq.w #8, ($d4,A4) 04D184: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+8 04D188: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+2 04D18C: 4EB9 0000 5FDE jsr $5fde.l 04D192: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D196: 122C 00D1 move.b ($d1,A4), D1 ; D1=[A4+$d1] value 04D19A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D1A0: 4EB9 0000 5F60 jsr $5f60.l 04D1A6: 046C 0008 00D4 subi.w #$8, ($d4,A4) 04D1AC: 546C 00D6 addq.w #2, ($d6,A4) 04D1B0: 202C 00C0 move.l ($c0,A4), D0 ; D0=[A4+$c0] value 04D1B4: 0240 FC00 andi.w #$fc00, D0 ; D0=[A4+$c0] value&#$fc00 04D1B8: 7200 moveq #$0, D1 ; D1=0 04D1BA: 122C 00D3 move.b ($d3,A4), D1 ; D1=[A4+$d3] value 04D1BE: D241 add.w D1, D1 04D1C0: D241 add.w D1, D1 ; D1=[A4+$d3] value*4 04D1C2: D081 add.l D1, D0 ; D0=([A4+$c0] value&#$fc00)+([A4+$d3] value*4) 04D1C4: 2C40 movea.l D0, A6 ; A6=[([A4+$c0] value&#$fc00)+([A4+$d3] value*4)] 04D1C6: 7E0F moveq #$f, D7 ; D7=#$f 04D1C8: 7C03 moveq #$3, D6 ; D6=#$3 04D1CA: 7A00 moveq #$0, D5 ; D5=0 04D1CC: 7800 moveq #$0, D4 ; D4=0 04D1CE: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D1D2: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+4 04D1D6: 4EB9 0000 5FDE jsr $5fde.l 04D1DC: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D1E0: B82C 00D0 cmp.b ($d0,A4), D4 04D1E4: 6600 000E bne $4d1f4 ; if [A4+$d0] value!=0 then skip next 3 steps 04D1E8: BA2C 00D2 cmp.b ($d2,A4), D5 04D1EC: 6600 0006 bne $4d1f4 ; else if [A4+$d2] value!=0 then skip next step 04D1F0: 0040 8000 ori.w #$8000, D0 ; else D0=#$8000|#$f00=#$8f00 04D1F4: 121E move.b (A6)+, D1 ; D1=[([A4+$c0] value&#$fc00)+([A4+$d3] value*4)+1] value 04D1F6: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D1FC: 4EB9 0000 5F60 jsr $5f60.l 04D202: 566C 00D4 addq.w #3, ($d4,A4) 04D206: 5244 addq.w #1, D4 ; D4=1 04D208: 5346 subq.w #1, D6 ; D6=2 04D20A: 6A00 0012 bpl $4d21e ; Here is begin of the cycle. The next 5 steps will use to be skipped while D6 is positive. 04D20E: 046C 000C 00D4 subi.w #$c, ($d4,A4) 04D214: 526C 00D6 addq.w #1, ($d6,A4) 04D218: 7800 moveq #$0, D4 ; D4=0 04D21A: 5245 addq.w #1, D5 ; D5+1 04D21C: 7C03 moveq #$3, D6 ; D6=3 04D21E: 51CF FFAE dbra D7, $4d1ce ; D7-1, if D7 <> 0 jump back to $4d1ce 04D222: 4E75 rts04CFAC: 082D 0003 39F5 btst #$3, ($39f5,A5) 04CFB2: 6700 0030 beq $4cfe4 ; if 4th bit of [A5+$39f5] value is equal to 0 then end the subroutine ahead of time 04CFB6: 082D 0002 39F6 btst #$2, ($39f6,A5) 04CFBC: 6700 0026 beq $4cfe4 ; if 3rd bit of [A5+$39f6] value is equal to 0 then end the subroutine ahead of time 04CFC0: 206C 0084 movea.l ($84,A4), A0 ; A0=[A4+$84] 04CFC4: 4228 00C9 clr.b ($c9,A0) ; [A0+$c9] value=0 04CFC8: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A0+$c9] value=0|1=1 04CFCE: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value 04CFD2: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value 04CFD6: 343C 000F move.w #$f, D2 ; D2=#$f 04CFDA: 363C 0007 move.w #$7, D3 ; D3=#$7 04CFDE: 4EB9 0000 5FEA jsr $5fea.l 04CFE4: 4E75 rts
avatar

38

04D28A: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6 04D290: 4EBA 0034 jsr ($34,PC) ; ($4d2c6) 04D294: 4E71 nop 04D296: 4EBA 0254 jsr ($254,PC) ; ($4d4ec) 04D29A: 4E71 nop 04D29C: 4EBA 0360 jsr ($360,PC) ; ($4d5fe) 04D2A0: 4E71 nop 04D2A2: 4EBA 020E jsr ($20e,PC) ; ($4d4b2) 04D2A6: 4E71 nop 04D2A8: 4E75 rts04D2C6: 102D 39CD move.b ($39cd,A5), D0 ; D0=[A5+$39cd] value 04D2CA: 0240 000F andi.w #$f, D0 ; D0=[A5+$39cd] value&#$f 04D2CE: 41FA 0030 lea ($30,PC) ; ($4d300), A0 04D2D2: 4E71 nop 04D2D4: 7200 moveq #$0, D1 ; D1=0 04D2D6: 1230 0000 move.b (A0,D0.w), D1 ; D1=([A5+$39cd] value&#$f)+$ff02 04D2DA: 6B00 0022 bmi $4d2fe ; if ([A5+$39cd] value&#$f)+$ff02 is negative then end the subroutime ahead of time 04D2DE: D241 add.w D1, D1 04D2E0: D241 add.w D1, D1 ; else D1=(([A5+$39cd] value&#$f)+$ff02)*4 04D2E2: 41FA 002C lea ($2c,PC) ; ($4d310), A0 04D2E6: 4E71 nop 04D2E8: 082D 0002 39F5 btst #$2, ($39f5,A5) 04D2EE: 6700 0008 beq $4d2f8 ; if 3rd bit of [A5+$39f5] value is equal to 0 then skip next 2 steps 04D2F2: 41FA 002C lea ($2c,PC) ; ($4d320), A0 04D2F6: 4E71 nop 04D2F8: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[((([A5+$39cd] value&#$f)+$ff02)*4)+$4d330] or [((([A5+$39cd] value&#$f)+$ff02)*4)+$4d41a] 04D2FC: 4E90 jsr (A0) 04D2FE: 4E75 rts04D4EC: 082D 0000 39F5 btst #$0, ($39f5,A5) 04D4F2: 6600 0082 bne $4d576 ; if 1st bit of [A5+$39f5] value is equal to 0 the goto $4d576 subroutine 04D4F6: 082D 0004 39CD btst #$4, ($39cd,A5) 04D4FC: 6700 000E beq $4d50c ; if 5th bit of [A5+$39f5] value is equal to 0 then goto $4d50c subroutine 04D500: 4EBA 05AA jsr ($5aa,PC) ; ($4daac) 04D504: 4E71 nop 04D506: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value] 04D508: 5210 addq.b #1, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]+1 04D50A: 4E75 rts04D5FE: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) 04D604: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) 04D60A: 7000 moveq #$0, D0 ; D0=0 04D60C: 102C 00D3 move.b ($d3,A4), D0 ; D0=[A4+$d3] value 04D610: E948 lsl.w #4, D0 ; D0=[A4+$d3] value<<4 04D612: 43F9 0006 E964 lea $6e964.l, A1 ; A1=[$6e964] 04D618: D2C0 adda.w D0, A1 ; A1=[$6e964+([A4+$d3] value<<4)] 04D61A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D61E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value 04D622: 4EB9 0000 5FDE jsr $5fde.l 04D628: 2049 movea.l A1, A0 ; A0=[$6e964+([A4+$d3] value<<4)] 04D62A: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D62E: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D634: 4EB9 0000 5F0C jsr $5f0c.l 04D63A: 526C 00D6 addq.w #1, ($d6,A4) 04D63E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D642: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1 04D646: 207C 0006 E838 movea.l #$6e838, A0 ; A0=[$6e838] 04D64C: 343C 0F00 move.w #$f00, D2 ; D2=#$f00 04D650: 363C 0001 move.w #$1, D3 ; D3=1 04D654: 4EB9 0000 5F22 jsr $5f22.l 04D65A: 586C 00D4 addq.w #4, ($d4,A4) 04D65E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+4 04D662: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1 04D666: 4EB9 0000 5FDE jsr $5fde.l 04D66C: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D670: 122C 0071 move.b ($71,A4), D1 ; D1=[A4+$71] value 04D674: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D67A: 4EB9 0000 5F60 jsr $5f60.l 04D680: 566C 00D4 addq.w #3, ($d4,A4) 04D684: 302C 0070 move.w ($70,A4), D0 ; D0=[A4+$70] value 04D688: E948 lsl.w #4, D0 ; D0=[A4+$70] value<<4 04D68A: 43F9 0007 BD00 lea $7bd00.l, A1 ; A1=[$7bd00] 04D690: D2C0 adda.w D0, A1 ; A1=[$7bd00+([A4+$70] value<<4)] 04D692: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+7 04D696: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1 04D69A: 4EB9 0000 5FDE jsr $5fde.l 04D6A0: 2049 movea.l A1, A0 ; A0=[$7bd00+([A4+$70] value<<4)] 04D6A2: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D6A6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D6AC: 4EB9 0000 5F0C jsr $5f0c.l 04D6B2: 576C 00D4 subq.w #3, ($d4,A4) 04D6B6: 526C 00D6 addq.w #1, ($d6,A4) 04D6BA: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+4 04D6BE: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+2 04D6C2: 4EB9 0000 5FDE jsr $5fde.l 04D6C8: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D6CC: 122C 00D1 move.b ($d1,A4), D1 ; D1=[A4+$d1] value 04D6D0: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D6D6: 4EB9 0000 5F60 jsr $5f60.l 04D6DC: 566C 00D4 addq.w #3, ($d4,A4) 04D6E0: 7000 moveq #$0, D0 ; D0=0 04D6E2: 102C 00D1 move.b ($d1,A4), D0 ; D0=[A4+$d1] value 04D6E6: E948 lsl.w #4, D0 ; D0=[A4+$d1] value<<4 04D6E8: 43F9 0007 BD00 lea $7bd00.l, A1 ; A1=[$7bd00] 04D6EE: D2C0 adda.w D0, A1 ; A1=[$7bd00+([A4+$d1] value<<4)] 04D6F0: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+7 04D6F4: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+2 04D6F8: 4EB9 0000 5FDE jsr $5fde.l 04D6FE: 2049 movea.l A1, A0 ; A0=[$7bd00+([A4+$d1] value<<4)] 04D700: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D704: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D70A: 4EB9 0000 5F0C jsr $5f0c.l 04D710: 5F6C 00D4 subq.w #7, ($d4,A4) 04D714: 546C 00D6 addq.w #2, ($d6,A4) 04D718: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D71C: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+4 04D720: 343C 000D move.w #$d, D2 ; D2=#$d 04D724: 363C 0007 move.w #$7, D3 ; D3=7 04D728: 4EB9 0000 5FEA jsr $5fea.l 04D72E: 202C 00C0 move.l ($c0,A4), D0 ; D0=[A4+$c0] value 04D732: D0AC 00C4 add.l ($c4,A4), D0 ; D0=[A4+$c0] value+[A4+$c4] value 04D736: 7200 moveq #$0, D1 ; D1=0 04D738: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value 04D73C: C2EC 0070 mulu.w ($70,A4), D1 ; D1=[A4+$c8] value*[A4+$70] value 04D740: C2FC 001A mulu.w #$1a, D1 ; D1=[A4+$c8] value*[A4+$70] value*#$1a 04D744: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a) 04D746: 7200 moveq #$0, D1 ; D1=0 04D748: 7400 moveq #$0, D2 ; D2=0 04D74A: 122C 00C9 move.b ($c9,A4), D1 ; D1=[A4+$c9] value 04D74E: 142C 00C8 move.b ($c8,A4), D2 ; D2=[A4+$c8] value 04D752: C2C2 mulu.w D2, D1 ; D1=[A4+$c9] value*[A4+$c8] value 04D754: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c9] value*[A4+$c8] value) 04D756: 2C40 movea.l D0, A6 ; A6=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c9] value*[A4+$c8] value)] 04D758: 7E00 moveq #$0, D7 ; D7=0 04D75A: 1E2C 00C8 move.b ($c8,A4), D7 ; D7=[A4+$c8] value 04D75E: CEFC 0008 mulu.w #$8, D7 ; D7=[A4+$c8] value*8 04D762: 5347 subq.w #1, D7 ; D7=([A4+$c8] value*8)-1 04D764: 1C2C 00C8 move.b ($c8,A4), D6 ; D6=[A4+$c8] value 04D768: 7A00 moveq #$0, D5 ; D5=0 04D76A: 7800 moveq #$0, D4 ; D4=0 04D76C: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value 04D770: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+4 04D774: 4EB9 0000 5FDE jsr $5fde.l 04D77A: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D77E: B82C 00D0 cmp.b ($d0,A4), D4 04D782: 6600 000E bne $4d792 ; if [A4+$d0] value!=0 then skip next 3 steps 04D786: BA2C 00D2 cmp.b ($d2,A4), D5 04D78A: 6600 0006 bne $4d792 ; else if [A4+$d2] value!=0 then skip next 1 steps 04D78E: 0040 8000 ori.w #$8000, D0 ; else D0=[A4+$cc] value|#$8000 04D792: 121E move.b (A6)+, D1 ; D1=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c9] value*[A4+$c8] value)]+1 04D794: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D79A: 4EB9 0000 5F60 jsr $5f60.l 04D7A0: 566C 00D4 addq.w #3, ($d4,A4) 04D7A4: 5244 addq.w #1, D4 ; D4=1 04D7A6: 5306 subq.b #1, D6 ; D6=[A4+$c8] value-1 04D7A8: 6600 001C bne $4d7c6 ; if [A4+$c8] value!=1 then skip to $4d7c6 04D7AC: 7000 moveq #$0, D0 ; else D0=0 04D7AE: 102C 00C8 move.b ($c8,A4), D0 ; D0=[A4+$c8] value 04D7B2: C0FC 0003 mulu.w #$3, D0 ; D0=[A4+$c8] value*3 04D7B6: 916C 00D4 sub.w D0, ($d4,A4) ; ([A4+$cc] value+3)-([A4+$c8] value*3) 04D7BA: 526C 00D6 addq.w #1, ($d6,A4) 04D7BE: 7800 moveq #$0, D4 ; D4=0 04D7C0: 5245 addq.w #1, D5 ; D5=1 04D7C2: 1C2C 00C8 move.b ($c8,A4), D6 ; D6=[A4+$c8] value 04D7C6: 51CF FFA4 dbra D7, $4d76c ; (([A4+$c8] value*8)-1)-1, if ([A4+$c8] value*8)-1<>0 then jump back to $4d76c 04D7CA: 066C 0001 00D6 addi.w #$1, ($d6,A4) 04D7D0: 302C 00D4 move.w ($d4,A4), D0 04D7D4: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04D7D8: 4EB9 0000 5FDE jsr $5fde.l 04D7DE: 207C 0006 E85A movea.l #$6e85a, A0 ; A0=[#$6e85a] 04D7E4: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D7E8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D7EE: 4EB9 0000 5F0C jsr $5f0c.l 04D7F4: 5A6C 00D4 addq.w #5, ($d4,A4) 04D7F8: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5 04D7FC: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04D800: 4EB9 0000 5FDE jsr $5fde.l 04D806: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D80A: 322D 0118 move.w ($118,A5), D1 ; D1=[A5+$118] value 04D80E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D814: 4EB9 0000 5F94 jsr $5f94.l 04D81A: 586C 00D4 addq.w #4, ($d4,A4) 04D81E: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9 04D822: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04D826: 4EB9 0000 5FDE jsr $5fde.l 04D82C: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D830: 322D 011A move.w ($11a,A5), D1 ; D1=[A5+$11a] value 04D834: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D83A: 4EB9 0000 5F94 jsr $5f94.l 04D840: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04D846: 526C 00D6 addq.w #1, ($d6,A4) 04D84A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04D84E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04D852: 4EB9 0000 5FDE jsr $5fde.l 04D858: 207C 0006 E860 movea.l #$6e860, A0 ; A0=[#$6e860] 04D85E: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D862: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D868: 4EB9 0000 5F0C jsr $5f0c.l 04D86E: 5A6C 00D4 addq.w #5, ($d4,A4) 04D872: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5 04D876: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04D87A: 4EB9 0000 5FDE jsr $5fde.l 04D880: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D884: 322D 0318 move.w ($318,A5), D1 ; D1=[A5+$318] value 04D888: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D88E: 4EB9 0000 5F94 jsr $5f94.l 04D894: 586C 00D4 addq.w #4, ($d4,A4) 04D898: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9 04D89C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2 04D8A0: 4EB9 0000 5FDE jsr $5fde.l 04D8A6: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D8AA: 322D 031A move.w ($31a,A5), D1 ; D1=[A5+$31a] value 04D8AE: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D8B4: 4EB9 0000 5F94 jsr $5f94.l 04D8BA: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04D8C0: 526C 00D6 addq.w #1, ($d6,A4) 04D8C4: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04D8C8: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04D8CC: 4EB9 0000 5FDE jsr $5fde.l 04D8D2: 207C 0006 E866 movea.l #$6e866, A0 ; A0=[#$6e866] 04D8D8: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D8DC: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D8E2: 4EB9 0000 5F0C jsr $5f0c.l 04D8E8: 5A6C 00D4 addq.w #5, ($d4,A4) 04D8EC: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5 04D8F0: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04D8F4: 4EB9 0000 5FDE jsr $5fde.l 04D8FA: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D8FE: 322D 0120 move.w ($120,A5), D1 ; D1=[A5+$120] value 04D902: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D908: 4EB9 0000 5F94 jsr $5f94.l 04D90E: 586C 00D4 addq.w #4, ($d4,A4) 04D912: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9 04D916: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04D91A: 4EB9 0000 5FDE jsr $5fde.l 04D920: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D924: 322D 0122 move.w ($122,A5), D1 ; D1=[A5+$122] value 04D928: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D92E: 4EB9 0000 5F94 jsr $5f94.l 04D934: 046C 0009 00D4 subi.w #$9, ($d4,A4) 04D93A: 526C 00D6 addq.w #1, ($d6,A4) 04D93E: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value 04D942: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4 04D946: 4EB9 0000 5FDE jsr $5fde.l 04D94C: 207C 0006 E86C movea.l #$6e86c, A0 ; A0=[#$6e86c] 04D952: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D956: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D95C: 4EB9 0000 5F0C jsr $5f0c.l 04D962: 5A6C 00D4 addq.w #5, ($d4,A4) 04D966: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5 04D96A: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+404D96E: 4EB9 0000 5FDE jsr $5fde.l 04D974: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D978: 322D 0320 move.w ($320,A5), D1 ; D1=[A5+$320] value 04D97C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D982: 4EB9 0000 5F94 jsr $5f94.l 04D988: 586C 00D4 addq.w #4, ($d4,A4) 04D98C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9 04D990: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4 04D994: 4EB9 0000 5FDE jsr $5fde.l 04D99A: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D99E: 322D 0322 move.w ($322,A5), D1 ; D1=[A5+$322] value 04D9A2: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04D9A8: 4EB9 0000 5F94 jsr $5f94.l 04D9AE: 066C 0005 00D4 addi.w #$5, ($d4,A4) 04D9B4: 576C 00D6 subq.w #3, ($d6,A4) 04D9B8: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+14 04D9BC: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04D9C0: 4EB9 0000 5FDE jsr $5fde.l 04D9C6: 207C 0006 E872 movea.l #$6e872, A0 ; A0=[#$6e872] 04D9CC: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04D9D0: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04D9D6: 4EB9 0000 5F0C jsr $5f0c.l 04D9DC: 302D 0118 move.w ($118,A5), D0 ; D0=[A5+$118] value 04D9E0: 906D 0318 sub.w ($318,A5), D0 ; D0=[A5+$118] value-[A5+$318] value 04D9E4: 4EB9 0000 2F94 jsr $2f94.l 04D9EA: 1940 0050 move.b D0, ($50,A4) ; [A4+$50] value=[A5+$118] value-[A5+$318] value or -([A5+$118] value-[A5+$318] value) 04D9EE: 566C 00D4 addq.w #3, ($d4,A4) 04D9F2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+17 04D9F6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1 04D9FA: 4EB9 0000 5FDE jsr $5fde.l 04DA00: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04DA04: 122C 0050 move.b ($50,A4), D1 ; D1=[A5+$118] value-[A5+$318] value or -([A5+$118] value-[A5+$318] value) 04DA08: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04DA0E: 4EB9 0000 5F60 jsr $5f60.l 04DA14: 576C 00D4 subq.w #3, ($d4,A4) 04DA18: 546C 00D6 addq.w #2, ($d6,A4) 04DA1C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+14 04DA20: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04DA24: 4EB9 0000 5FDE jsr $5fde.l 04DA2A: 207C 0006 E876 movea.l #$6e876, A0 ; A0=[#$6e876] 04DA30: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04DA34: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000 04DA3A: 4EB9 0000 5F0C jsr $5f0c.l 04DA40: 302D 0120 move.w ($120,A5), D0 ; D0=[A5+$120] value 04DA44: 906D 0320 sub.w ($320,A5), D0 ; D0=[A5+$120] value-[A5+$320] value 04DA48: 4EB9 0000 2F94 jsr $2f94.l 04DA4E: 1940 0050 move.b D0, ($50,A4) ; [A4+$50] value=[A5+$120] value-[A5+$320] value or -([A5+$120] value-[A5+$320] value) 04DA52: 566C 00D4 addq.w #3, ($d4,A4) 04DA56: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+17 04DA5A: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3 04DA5E: 4EB9 0000 5FDE jsr $5fde.l 04DA64: 303C 0F00 move.w #$f00, D0 ; D0=#$f00 04DA68: 122C 0050 move.b ($50,A4), D1 ; D1=[A5+$120] value-[A5+$320] value or -([A5+$120] value-[A5+$320] value) 04DA6C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000 04DA72: 4EB9 0000 5F60 jsr $5f60.l 04DA78: 4E75 rts04D4B2: 082D 0003 39F5 btst #$3, ($39f5,A5) 04D4B8: 6700 0030 beq $4d4ea ; if 4th bit of [A5+$39f5] value is equal to 0 then end the subroutine ahead of time 04D4BC: 082D 0002 39F6 btst #$2, ($39f6,A5) 04D4C2: 6700 0026 beq $4d4ea ; else if 3rd bit of [A5+$39f6] value is equal to 0 then end the subroutine ahead of time 04D4C6: 206C 0084 movea.l ($84,A4), A0 ; else A0=[A4+$84] 04D4CA: 4228 00C9 clr.b ($c9,A0) ; [A4+14D] value=0 04D4CE: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A4+14D] value=0|1=1 04D4D4: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value 04D4D8: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value 04D4DC: 343C 0015 move.w #$15, D2 ; D2=#$15 04D4E0: 363C 0010 move.w #$10, D3 ; D3=#$10 04D4E4: 4EB9 0000 5FEA jsr $5fea.l 04D4EA: 4E75 rts04D300: FF02 dc.w $ff02; opcode 111104D310: 0004 D330 ori.b #$30, D404D320: 0004 D41A ori.b #$1a, D404D576: 082D 0004 39CD btst #$4, ($39cd,A5) 04D57C: 6700 0010 beq $4d58e ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d58e, else... 04D580: 4EBA 052A jsr ($52a,PC) ; ($4daac) 04D584: 4E71 nop 04D586: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value] 04D588: 0610 0010 addi.b #$10, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]+#$10 04D58C: 4E75 rts 04D58E: 082D 0005 39CD btst #$5, ($39cd,A5) 04D594: 6700 0010 beq $4d5a6 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4d5a6, else... 04D598: 4EBA 0512 jsr ($512,PC) ; ($4daac) 04D59C: 4E71 nop 04D59E: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value] 04D5A0: 0410 0010 subi.b #$10, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]-#$10 04D5A4: 4E75 rts 04D5A6: 082D 0006 39CD btst #$6, ($39cd,A5) 04D5AC: 6700 0018 beq $4d5c6 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4d5c6, else... 04D5B0: 4EBA 0046 jsr ($46,PC) ; ($4d5f8) 04D5B4: 4E71 nop 04D5B6: 536C 0070 subq.w #1, ($70,A4) 04D5BA: 6400 0034 bcc $4d5f0 ; if [A4+$70] value>=1 then end the subroutine ahead of time 04D5BE: 397C 0019 0070 move.w #$19, ($70,A4) ; else [A4+$70] value=#$19 04D5C4: 4E75 rts 04D5C6: 082D 0007 39CD btst #$7, ($39cd,A5) 04D5CC: 6700 0022 beq $4d5f0 ; if 8th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time, else... 04D5D0: 4EBA 0020 jsr ($20,PC) ; ($4d5f2) 04D5D4: 4E71 nop 04D5D6: 532C 00D3 subq.b #1, ($d3,A4) 04D5DA: 6400 0008 bcc $4d5e4 ; if [A4+$d3] value>=1 then skip next step 04D5DE: 197C 0007 00D3 move.b #$7, ($d3,A4) ; else [A4+$d3] value=7 04D5E4: 4EBA 0494 jsr ($494,PC) ; ($4da7a) 04D5E8: 4E71 nop 04D5EA: 4EBA 04AC jsr ($4ac,PC) ; ($4da98) 04D5EE: 4E71 nop 04D5F0: 4E75 rts
avatar

39

04D5F2: 422C 00D0 clr.b ($d0,A4) 04D5F6: 4E75 rts04D5F8: 422C 00D0 clr.b ($d0,A4) 04D5FC: 4E75 rts04DA7A: 7000 moveq #$0, D0 ; D0=0 04DA7C: 7200 moveq #$0, D1 ; D1=0 04DA7E: 102C 00D3 move.b ($d3,A4), D0 ; D0=[A4+$d3] value 04DA82: 41FA 005A lea ($5a,PC) ; ($4dade), A0 04DA86: 4E71 nop 04DA88: 5300 subq.b #1, D0 04DA8A: 6500 0006 bcs $4da92 ; if [A4+$d3] value<1 then skip next 2 steps 04DA8E: D298 add.l (A0)+, D1 ; else D1=[$0a91]=#$42 04DA90: 60F6 bra $4da88 ; here is a begin of cycle, and it will continue till [A4+$d3] value became less than 1 04DA92: 2941 00C4 move.l D1, ($c4,A4) 04DA96: 4E75 rts04DA98: 7000 moveq #$0, D0 ; D0=0 04DA9A: 102C 00D3 move.b ($d3,A4), D0 ; D0=[A4+$d3] value 04DA9E: 41FA 005E lea ($5e,PC) ; ($4dafe), A0 04DAA2: 4E71 nop 04DAA4: 1970 0000 00C8 move.b (A0,D0.w), ($c8,A4) ; [A4+$c8] value=[A4+$d3] value+#$0404 04DAAA: 4E75 rts04DADE: 0000 0A90 ori.b #$90, D0000A90: 4842 swap D204DAFE: 0404 0404 subi.b #$4, D404DAAC: 202C 00C0 move.l ($c0,A4), D0 ; D0=[A4+$c0] value 04DAB0: D0AC 00C4 add.l ($c4,A4), D0 ; D0=[A4+$c0] value+[A4+$c4] value 04DAB4: 7200 moveq #$0, D1 ; D1=0 04DAB6: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value 04DABA: C2EC 0070 mulu.w ($70,A4), D1 ; D1=[A4+$c8] value*[A4+$70] value 04DABE: C2FC 001A mulu.w #$1a, D1 ; D1=[A4+$c8] value*[A4+$70] value*#$1a 04DAC2: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a) 04DAC4: 7200 moveq #$0, D1 ; D1=0 04DAC6: 7400 moveq #$0, D2 ; D2=0 04DAC8: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value 04DACC: 142C 00D1 move.b ($d1,A4), D2 ; D2=[A4+$d1] value 04DAD0: C2C2 mulu.w D2, D1 ; D1=[A4+$c8] value*[A4+$d1] value 04DAD2: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value) 04DAD4: 7200 moveq #$0, D1 ; D1=0 04DAD6: 122C 00D0 move.b ($d0,A4), D1 ; D1=[A4+$d0] value 04DADA: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value 04DADC: 4E75 rts04D50C: 082D 0005 39CD btst #$5, ($39cd,A5) 04D512: 6700 000E beq $4d522 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4d522 subroutine 04D516: 4EBA 0594 jsr ($594,PC) ; ($4daac) 04D51A: 4E71 nop 04D51C: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value] 04D51E: 5310 subq.b #1, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]-1 04D520: 4E75 rts 04D522: 082D 0006 39CD btst #$6, ($39cd,A5) 04D528: 6700 001C beq $4d546 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4d546 subroutine 04D52C: 4EBA 00CA jsr ($ca,PC) ; ($4d5f8) 04D530: 4E71 nop 04D532: 526C 0070 addq.w #1, ($70,A4) 04D536: 0C6C 0019 0070 cmpi.w #$19, ($70,A4) 04D53C: 6300 0036 bls $4d574 ; if old [A4+$70] value+1<=#$19 then end the subroutine ahead of time 04D540: 426C 0070 clr.w ($70,A4) ; else [A4+$d3] value=0 04D544: 4E75 rts 04D546: 082D 0007 39CD btst #$7, ($39cd,A5) 04D54C: 6700 0026 beq $4d574 ; if 8th bit of [A5+$39cd] is equal to 0 then end the subroutine ahead of time, else... 04D550: 4EBA 00A0 jsr ($a0,PC) ; ($4d5f2) 04D554: 4E71 nop 04D556: 522C 00D3 addq.b #1, ($d3,A4) 04D55A: 0C2C 0007 00D3 cmpi.b #$7, ($d3,A4) 04D560: 6300 0006 bls $4d568 ; if old [A4+$d3] value+1<=7 then skip next step 04D564: 422C 00D3 clr.b ($d3,A4) ; else [A4+$d3] value=0 04D568: 4EBA 0510 jsr ($510,PC) ; ($4da7a) 04D56C: 4E71 nop 04D56E: 4EBA 0528 jsr ($528,PC) ; ($4da98) 04D572: 4E71 nop 04D574: 4E75 rts005F22: 3800 move.w D0, D4 ; D4=[A4+$cc] value 005F24: 3A01 move.w D1, D5 ; D5=[A4+$ce] value+1 005F26: 4EBA 00B6 jsr ($b6,PC) ; ($5fde) 005F2A: 4E71 nop 005F2C: 3002 move.w D2, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)=#$f00 005F2E: 1018 move.b (A0)+, D0 ; lowest byte of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)=[$6e839] value=#$41 005F30: 0C00 00FF cmpi.b #-$1, D0 005F34: 6700 0028 beq $5f5e ; looks like here is a begin of cycle which will be continue till lowest byte of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002) become -1 005F38: 0C00 000D cmpi.b #$d, D0 005F3C: 6600 0012 bne $5f50 ; if lowest byte of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)!=#$d then skip to $5f50 005F40: DA43 add.w D3, D5 ; else D5=[A4+$ce] value+1+1=[A4+$ce] value+2 005F42: 3004 move.w D4, D0 ; D0=[A4+$cc] value 005F44: 3205 move.w D5, D1 ; D1=[A4+$ce] value+1 005F46: 4EBA 0096 jsr ($96,PC) ; ($5fde) 005F4A: 4E71 nop 005F4C: 3002 move.w D2, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)=#$f00 005F4E: 60DE bra $5f2e ; jump back to $5f2e, and lowest byte of D0 will become equal to #$41 again. Is this cycle an infinitive? 005F50: 23C0 003C 0000 move.l D0, $3c0000.l ; send (highest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)+high byte of #$f00+lowest byte) to REG_VRAMADDR 005F56: 0680 0020 0000 addi.l #$200000, D0 ; D0=(highest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)+high byte of #$f00+lowest byte)+#$200000 005F5C: 60D0 bra $5f2e ; jump back to $5f2e, and lowest byte of D0 will become equal to #$41 again. Is this cycle an infinitive? 005F5E: 4E75 rts002F94: 4A40 tst.w D0 002F96: 6A02 bpl $2f9a ; if [A5+$118] value-[A5+$318] value is negative then change its sign 002F98: 4440 neg.w D0 002F9A: 4E75 rts
avatar