Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
Line 72: Line 72:
  0800FCD8 E00B    b      800FCF2h                        ;else branch to 0x800FCF2 (default for Monster cards)
  0800FCD8 E00B    b      800FCF2h                        ;else branch to 0x800FCF2 (default for Monster cards)
  0800FCDA 0000    lsl    r0,r0,0h                        ;
  0800FCDA 0000    lsl    r0,r0,0h                        ;
==? (CPU deck ?)==
===Super-long routine checking a lot of card IDs in the deck===
08067C1A 4C15    ldr    r4,=7FFh                                ;
08067C1C 1C27    mov    r7,r4                                  ;r7 = 0x7FF
08067C1E 23F8    mov    r3,0F8h                                ;
08067C20 045B    lsl    r3,r3,11h                              ;
08067C22 2001    mov    r0,1h                                  ;
08067C24 4649    mov    r1,r9                                  ;
08067C26 4008    and    r0,r1                                  ;
08067C28 4644    mov    r4,r8                                  ;
08067C2A 00A1    lsl    r1,r4,2h                                ;
08067C2C 4350    mul    r0,r2                                  ;
08067C2E 1809    add    r1,r1,r0                                ;
08067C30 4810    ldr    r0,=20197A8h                            ;
08067C32 1809    add    r1,r1,r0                                ;
08067C34 6808    ldr    r0,[r1]                                ;
08067C36 0500    lsl    r0,r0,14h                              ;
08067C38 0D06    lsr    r6,r0,14h                              ;
08067C3A 1C31    mov    r1,r6                                  ;
08067C3C 4039    and    r1,r7                                  ;
08067C3E 0088    lsl    r0,r1,2h                                ;
08067C40 4C0D    ldr    r4,=8832B84h                            ;
08067C42 1902    add    r2,r0,r4                                ;
08067C44 6810    ldr    r0,[r2]                                ;
08067C46 4018    and    r0,r3                                  ;
08067C48 0D00    lsr    r0,r0,14h                              ;
08067C4A 2815    cmp    r0,15h                                  ;
08067C4C D01A    beq    8067C84h                                ;
08067C4E 2816    cmp    r0,16h                                  ;
08067C50 D100    bne    8067C54h                                ;
08067C52 E128    b      8067EA6h                                ;
08067C54 0048    lsl    r0,r1,1h                                ;r0 = current_card_id << 1
08067C56 4909    ldr    r1,=8833C80h                            ;r1 = pointer_to_internal_cards_ids_array
08067C58 1840    add    r0,r0,r1                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
08067C5A 8801    ldrh    r1,[r0]                                ;r1 = internal_card_id
08067C5C 4808    ldr    r0,=776h                                ;
08067C5E 4281    cmp    r1,r0                                  ;
08067C60 D000    beq    8067C64h                                ;if (r1 == 0d1910 [Obelisk the Tormentor]), branch to 08067C64
08067C62 E20D    b      8068080h                                ;else branch to 08068080
08067C64 2003    mov    r0,3h                                  ;r0 = 3
08067C66 E238    b      80680DAh                                ;branch to 080680DA
08067C68 8FE4    ldrh    r4,[r4,3Eh]                            ;
08067C6A 0201    lsl    r1,r0,8h                                ;
08067C6C 0D64    lsr    r4,r4,15h                              ;
08067C6E 0000    lsl    r0,r0,0h                                ;
08067C70 07FF    lsl    r7,r7,1Fh                              ;
08067C72 0000    lsl    r0,r0,0h                                ;
08067C74 97A8    str    r7,[sp,2A0h]                            ;
08067C76 0201    lsl    r1,r0,8h                                ;
08067C78 2B84    cmp    r3,84h                                  ;
08067C7A 0883    lsr    r3,r0,2h                                ;
08067C7C 3C80    sub    r4,80h                                  ;
08067C7E 0883    lsr    r3,r0,2h                                ;
08067C80 0776    lsl    r6,r6,1Dh                              ;
08067C82 0000    lsl    r0,r0,0h                                ;
08067C84 6968    ldr    r0,[r5,14h]                            ;
08067C86 3001    add    r0,1h                                  ;
08067C88 6168    str    r0,[r5,14h]                            ;
08067C8A 6811    ldr    r1,[r2]                                ;r1 = [r2]
08067C8C 1C08    mov    r0,r1                                  ;r0 = r1
08067C8E 4018    and    r0,r3                                  ;
08067C90 0D00    lsr    r0,r0,14h                              ;
08067C92 2816    cmp    r0,16h                                  ;
08067C94 DC06    bgt    8067CA4h                                ;
08067C96 2815    cmp    r0,15h                                  ;
08067C98 DB04    blt    8067CA4h                                ;
08067C9A 20E0    mov    r0,0E0h                                ;
08067C9C 0300    lsl    r0,r0,0Ch                              ;r0 = 0x1C00000
08067C9E 4001    and    r1,r0                                  ;r1 &= r0
08067CA0 0C48    lsr    r0,r1,11h                              ;r0 = r1 >> 17
08067CA2 E000    b      8067CA6h                                ;branch to 08067CA6
08067CA4 2000    mov    r0,0h                                  ;
08067CA6 2803    cmp    r0,3h                                  ;
08067CA8 D009    beq    8067CBEh                                ;if (r0 == 3), branch to 08067CBE
08067CAA 2803    cmp    r0,3h                                  ;
08067CAC DC02    bgt    8067CB4h                                ;if (r0 > 3), branch to 08067CB4
08067CAE 2802    cmp    r0,2h                                  ;
08067CB0 D00D    beq    8067CCEh                                ;if (r0 == 2), branch to 08067CCE
08067CB2 E013    b      8067CDCh                                ;else branch to 08067CDC
08067CB4 2804    cmp    r0,4h                                  ;
08067CB6 D006    beq    8067CC6h                                ;if (r0 == 4), branch to 08067CC6
08067CB8 2805    cmp    r0,5h                                  ;
08067CBA D00C    beq    8067CD6h                                ;if (r0 == 5), branch to 08067CD6
08067CBC E00E    b      8067CDCh                                ;else branch to 08067CDC
08067CBE 6A28    ldr    r0,[r5,20h]                            ;
08067CC0 3001    add    r0,1h                                  ;
08067CC2 6228    str    r0,[r5,20h]                            ;[r5 + 0x20]++
08067CC4 E00A    b      8067CDCh                                ;branch to 08067CDC
08067CC6 69E8    ldr    r0,[r5,1Ch]                            ;
08067CC8 3001    add    r0,1h                                  ;
08067CCA 61E8    str    r0,[r5,1Ch]                            ;[r5 + 0x1C]++
08067CCC E006    b      8067CDCh                                ;branch to 08067CDC
08067CCE 6A68    ldr    r0,[r5,24h]                            ;
08067CD0 3001    add    r0,1h                                  ;
08067CD2 6268    str    r0,[r5,24h]                            ;[r5 + 0x24]++
08067CD4 E002    b      8067CDCh                                ;branch to 08067CDC
08067CD6 6AA8    ldr    r0,[r5,28h]                            ;
08067CD8 3001    add    r0,1h                                  ;
08067CDA 62A8    str    r0,[r5,28h]                            ;[r5 + 0x28]++
08067CDC 403E    and    r6,r7                                  ;current_card_id &= 0x7FF
08067CDE 0070    lsl    r0,r6,1h                                ;r0 = current_card_id << 1
08067CE0 4A0F    ldr    r2,=8833C80h                            ;r2 = pointer_to_internal_cards_ids_array
08067CE2 1880    add    r0,r0,r2                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
08067CE4 8801    ldrh    r1,[r0]                                ;r1 = internal_card_id
08067CE6 480F    ldr    r0,=40Eh                                ;r0 = 0x40E [0d1038]
08067CE8 4281    cmp    r1,r0                                  ;
08067CEA D101    bne    8067CF0h                                ;if (internal_card_id ≠ 0d1038 [Magic Thorns]), branch to 08067CF0
08067CEC F000FCB2 bl      8068654h                                ;else call 0x8068654
08067CF0 4281    cmp    r1,r0                                  ;
08067CF2 DC5F    bgt    8067DB4h                                ;if (internal_card_id > 0d1038), branch to 08067DB4
08067CF4 3845    sub    r0,45h                                  ;r0 = 0x3C9 [0d969]
08067CF6 4281    cmp    r1,r0                                  ;
08067CF8 D100    bne    8067CFCh                                ;if (internal_card_id ≠ 0d969 [Chain Destruction]), branch to 08067CFC
08067CFA E1B9    b      8068070h                                ;else branch to 08068070
08067CFC 4281    cmp    r1,r0                                  ;
08067CFE DC2D    bgt    8067D5Ch                                ;if (internal_card_id > 0d969), branch to 08067D5C
08067D00 4809    ldr    r0,=2ADh                                ;r0 = 0x2AD [0d685]
08067D02 4281    cmp    r1,r0                                  ;
08067D04 D100    bne    8067D08h                                ;if (internal_card_id ≠ 0d685 [Widespread Ruin]), branch to 08067D08
08067D06 E1B3    b      8068070h                                ;else branch to 08068070
08067D08 4281    cmp    r1,r0                                  ;
08067D0A DC13    bgt    8067D34h                                ;if (internal_card_id > 0d685), branch to 08067D34
08067D0C 381C    sub    r0,1Ch                                  ;
08067D0E 4281    cmp    r1,r0                                  ;
08067D10 D101    bne    8067D16h                                ;if (internal_card_id ≠ 0d657 [Metalmorph]), branch to 08067D16
08067D12 F000FC94 bl      806863Eh                                ;else branch to 0806863E
08067D16 4281    cmp    r1,r0                                  ;
08067D18 DC08    bgt    8067D2Ch                                ;if (internal_card_id > 0d657), branch to 08067D2C
08067D1A 20AE    mov    r0,0AEh                                ;else r0 = 0xAE
08067D1C 0040    lsl    r0,r0,1h                                ;r0 << 1 [0x15C ; 0d348 ; Spellbinding Circle]
08067D1E E083    b      8067E28h                                ;branch to 08067E28
08067D20 3C80    sub    r4,80h                                  ;-
08067D22 0883    lsr    r3,r0,2h                                ;-
08067D24 040E    lsl    r6,r1,10h                              ;-
08067D26 0000    lsl    r0,r0,0h                                ;-
08067D28 02AD    lsl    r5,r5,0Ah                              ;-
08067D2A 0000    lsl    r0,r0,0h                                ;-
08067D2C 4800    ldr    r0,=2A9h                                ;... if (internal_card_id > 0d657), r0 = 0x2A9 [0d681 ; Eatgaboon]
08067D2E E031    b      8067D94h                                ;branch to 08067D94
08067D30 02A9    lsl    r1,r5,0Ah                              ;-
08067D32 0000    lsl    r0,r0,0h                                ;-
08067D34 4804    ldr    r0,=3ABh                                ;... if (internal_card_id > 0d685), r0 = 0x3AB [0d939 ; Bell of Destruction]
08067D36 4281    cmp    r1,r0                                  ;
08067D38 D101    bne    8067D3Eh                                ;if (internal_card_id ≠ 0d939 [Bell of Destruction]), branch to 08067D3E
08067D3A F000FC8B bl      8068654h                                ;else call 08068654
08067D3E 4281    cmp    r1,r0                                  ;
08067D40 DC04    bgt    8067D4Ch                                ;if (internal_card_id > 0d939), branch to 08067D4C
08067D42 38FA    sub    r0,0FAh                                ;r0 = 0d689 [Fake Trap in DM6, unused]
08067D44 E070    b      8067E28h                                ;branch to 08067E28
08067D46 0000    lsl    r0,r0,0h                                ;-
08067D48 03AB    lsl    r3,r5,0Eh                              ;-
08067D4A 0000    lsl    r0,r0,0h                                ;-
08067D4C 4802    ldr    r0,=3B1h                                ;... if (internal_card_id > 0d939), r0 = 0x3B1 [0d945, Magical Hats]
08067D4E 4281    cmp    r1,r0                                  ;
08067D50 D100    bne    8067D54h                                ;if (internal_card_id ≠ 0d945 [Magical Hats]), branch to 08067D54
08067D52 E18D    b      8068070h                                ;else branch to 08068070
08067D54 300F    add    r0,0Fh                                  ;r0 = 0x3C0 [0d960, Negate Attack]
08067D56 E067    b      8067E28h                                ;branch to 08067E28
08067D58 03B1    lsl    r1,r6,0Eh                              ;
08067D5A 0000    lsl    r0,r0,0h                                ;
08067D5C 4806    ldr    r0,=3FBh                                ;... if (internal_card_id > 0d969), r0 = 0x3FB [0d1019, White Hole]
08067D5E 4281    cmp    r1,r0                                  ;
08067D60 D100    bne    8067D64h                                ;
08067D62 E185    b      8068070h                                ;
08067D64 4281    cmp    r1,r0                                  ;
08067D66 DC0D    bgt    8067D84h                                ;
08067D68 3811    sub    r0,11h                                  ;
08067D6A 4281    cmp    r1,r0                                  ;
08067D6C D100    bne    8067D70h                                ;
08067D6E E17F    b      8068070h                                ;
08067D70 4281    cmp    r1,r0                                  ;
08067D72 DC03    bgt    8067D7Ch                                ;
08067D74 380C    sub    r0,0Ch                                  ;
08067D76 E057    b      8067E28h                                ;
08067D78 03FB    lsl    r3,r7,0Fh                              ;
08067D7A 0000    lsl    r0,r0,0h                                ;
08067D7C 20FE    mov    r0,0FEh                                ;
08067D7E 0080    lsl    r0,r0,2h                                ;
08067D80 F000FBCF bl      8068522h                                ;call 08068522
08067D84 4808    ldr    r0,=407h                                ;Traps ! [0d1031, Horn of Heaven]
08067D86 4281    cmp    r1,r0                                  ;
08067D88 DC10    bgt    8067DACh                                ;
08067D8A 3803    sub    r0,3h                                  ;
08067D8C 4281    cmp    r1,r0                                  ;
08067D8E DB00    blt    8067D92h                                ;
08067D90 E16E    b      8068070h                                ;branch to 08068070
08067D92 3806    sub    r0,6h                                  ;
08067D94 4281    cmp    r1,r0                                  ;
08067D96 DD01    ble    8067D9Ch                                ;
08067D98 F000FC77 bl      806868Ah                                ;
08067D9C 3801    sub    r0,1h                                  ;
08067D9E 4281    cmp    r1,r0                                  ;
08067DA0 DA01    bge    8067DA6h                                ;
08067DA2 F000FC72 bl      806868Ah                                ;
08067DA6 E163    b      8068070h                                ;
08067DA8 0407    lsl    r7,r0,10h                              ;
08067DAA 0000    lsl    r0,r0,0h                                ;
08067DAC 4800    ldr    r0,=409h                                ;[0d1033, Royal Decree]
08067DAE E03B    b      8067E28h                                ;branch to 08067E28
08067DB0 0409    lsl    r1,r1,10h                              ;
08067DB2 0000    lsl    r0,r0,0h                                ;
08067DB4 480A    ldr    r0,=49Ah                                ;[0d1178, Aqua Chorus]
08067DB6 4281    cmp    r1,r0                                  ;
08067DB8 D101    bne    8067DBEh                                ;
08067DBA F000FC40 bl      806863Eh                                ;
08067DBE 4281    cmp    r1,r0                                  ;
08067DC0 DC3A    bgt    8067E38h                                ;
08067DC2 3853    sub    r0,53h                                  ;
08067DC4 4281    cmp    r1,r0                                  ;
08067DC6 D101    bne    8067DCCh                                ;
08067DC8 F000FC50 bl      806866Ch                                ;
08067DCC 4281    cmp    r1,r0                                  ;
08067DCE DC13    bgt    8067DF8h                                ;
08067DD0 3821    sub    r0,21h                                  ;
08067DD2 4281    cmp    r1,r0                                  ;
08067DD4 D100    bne    8067DD8h                                ;
08067DD6 E14B    b      8068070h                                ;
08067DD8 4281    cmp    r1,r0                                  ;
08067DDA DC03    bgt    8067DE4h                                ;
08067DDC 3806    sub    r0,6h                                  ;
08067DDE E023    b      8067E28h                                ;
08067DE0 049A    lsl    r2,r3,12h                              ;
08067DE2 0000    lsl    r0,r0,0h                                ;
08067DE4 4803    ldr    r0,=43Ah                                ;[0d1082, Snake Fang]
08067DE6 4281    cmp    r1,r0                                  ;
08067DE8 D101    bne    8067DEEh                                ;
08067DEA F000FC28 bl      806863Eh                                ;
08067DEE 300A    add    r0,0Ah                                  ;
08067DF0 F000FC06 bl      8068600h                                ;
08067DF4 043A    lsl    r2,r7,10h                              ;
08067DF6 0000    lsl    r0,r0,0h                                ;
08067DF8 4807    ldr    r0,=475h                                ;[0d1141, Appropriate]
08067DFA 4281    cmp    r1,r0                                  ;
08067DFC D101    bne    8067E02h                                ;
08067DFE F000FC39 bl      8068674h                                ;
08067E02 4281    cmp    r1,r0                                  ;
08067E04 DC0A    bgt    8067E1Ch                                ;
08067E06 382B    sub    r0,2Bh                                  ;
08067E08 4281    cmp    r1,r0                                  ;
08067E0A D101    bne    8067E10h                                ;
08067E0C F000FC1E bl      806864Ch                                ;
08067E10 302A    add    r0,2Ah                                  ;
08067E12 F000FBF5 bl      8068600h                                ;
08067E16 0000    lsl    r0,r0,0h                                ;
08067E18 0475    lsl    r5,r6,11h                              ;
08067E1A 0000    lsl    r0,r0,0h                                ;
08067E1C 4805    ldr    r0,=47Bh                                ;[0d1147, Backup Soldier]
08067E1E 4281    cmp    r1,r0                                  ;
08067E20 D101    bne    8067E26h                                ;
08067E22 F000FC23 bl      806866Ch                                ;
08067E26 3007    add    r0,7h                                  ;
08067E28 4281    cmp    r1,r0                                  ;
08067E2A D100    bne    8067E2Eh                                ;
08067E2C E120    b      8068070h                                ;
08067E2E F000FC2C bl      806868Ah                                ;
08067E32 0000    lsl    r0,r0,0h                                ;
08067E34 047B    lsl    r3,r7,11h                              ;
08067E36 0000    lsl    r0,r0,0h                                ;
08067E38 4807    ldr    r0,=519h                                ;[0d1305, Solemn Wishes]
08067E3A 4281    cmp    r1,r0                                  ;
08067E3C D101    bne    8067E42h                                ;
08067E3E F000FC05 bl      806864Ch                                ;
08067E42 4281    cmp    r1,r0                                  ;
08067E44 DC14    bgt    8067E70h                                ;
08067E46 3804    sub    r0,4h                                  ;
08067E48 4281    cmp    r1,r0                                  ;
08067E4A D100    bne    8067E4Eh                                ;
08067E4C E110    b      8068070h                                ;
08067E4E 4281    cmp    r1,r0                                  ;
08067E50 DC04    bgt    8067E5Ch                                ;
08067E52 3857    sub    r0,57h                                  ;
08067E54 F000FBCB bl      80685EEh                                ;
08067E58 0519    lsl    r1,r3,14h                              ;
08067E5A 0000    lsl    r0,r0,0h                                ;
08067E5C 4803    ldr    r0,=516h                                ;[0d1302, Minor Goblin Official]
08067E5E 4281    cmp    r1,r0                                  ;
08067E60 D101    bne    8067E66h                                ;
08067E62 F000FBF7 bl      8068654h                                ;
08067E66 3002    add    r0,2h                                  ;
08067E68 E3C1    b      80685EEh                                ;
08067E6A 0000    lsl    r0,r0,0h                                ;
08067E6C 0516    lsl    r6,r2,14h                              ;
08067E6E 0000    lsl    r0,r0,0h                                ;
08067E70 4806    ldr    r0,=5A7h                                ;[0d1447, Jar of Greed]
08067E72 4281    cmp    r1,r0                                  ;
08067E74 D101    bne    8067E7Ah                                ;
08067E76 F000FBFD bl      8068674h                                ;
08067E7A 4281    cmp    r1,r0                                  ;
08067E7C DC08    bgt    8067E90h                                ;
08067E7E 388D    sub    r0,8Dh                                  ;
08067E80 4281    cmp    r1,r0                                  ;
08067E82 D101    bne    8067E88h                                ;
08067E84 F000FBE6 bl      8068654h                                ;
08067E88 3012    add    r0,12h                                  ;
08067E8A E3B0    b      80685EEh                                ;
08067E8C 05A7    lsl    r7,r4,16h                              ;
08067E8E 0000    lsl    r0,r0,0h                                ;
08067E90 20BF    mov    r0,0BFh                                ;
08067E92 00C0    lsl    r0,r0,3h                                ;
08067E94 4281    cmp    r1,r0                                  ;
08067E96 D100    bne    8067E9Ah                                ;
08067E98 E0EE    b      8068078h                                ;
08067E9A 3003    add    r0,3h                                  ;
08067E9C 4281    cmp    r1,r0                                  ;
08067E9E D001    beq    8067EA4h                                ;
08067EA0 F000FBF3 bl      806868Ah                                ;
08067EA4 E0E4    b      8068070h                                ;
08067EA6 6928    ldr    r0,[r5,10h]                            ;
08067EA8 3001    add    r0,1h                                  ;
08067EAA 6128    str    r0,[r5,10h]                            ;
08067EAC 6811    ldr    r1,[r2]                                ;
08067EAE 1C08    mov    r0,r1                                  ;
08067EB0 4018    and    r0,r3                                  ;
08067EB2 0D00    lsr    r0,r0,14h                              ;
08067EB4 2816    cmp    r0,16h                                  ;
08067EB6 DC06    bgt    8067EC6h                                ;
08067EB8 2815    cmp    r0,15h                                  ;
08067EBA DB04    blt    8067EC6h                                ;
08067EBC 20E0    mov    r0,0E0h                                ;
08067EBE 0300    lsl    r0,r0,0Ch                              ;
08067EC0 4001    and    r1,r0                                  ;
08067EC2 0C48    lsr    r0,r1,11h                              ;
08067EC4 E000    b      8067EC8h                                ;
08067EC6 2000    mov    r0,0h                                  ;
08067EC8 2803    cmp    r0,3h                                  ;
08067ECA D009    beq    8067EE0h                                ;
08067ECC 2803    cmp    r0,3h                                  ;
08067ECE DC02    bgt    8067ED6h                                ;
08067ED0 2802    cmp    r0,2h                                  ;
08067ED2 D00D    beq    8067EF0h                                ;
08067ED4 E013    b      8067EFEh                                ;
08067ED6 2804    cmp    r0,4h                                  ;
08067ED8 D006    beq    8067EE8h                                ;
08067EDA 2805    cmp    r0,5h                                  ;
08067EDC D00C    beq    8067EF8h                                ;
08067EDE E00E    b      8067EFEh                                ;
08067EE0 6A28    ldr    r0,[r5,20h]                            ;
08067EE2 3001    add    r0,1h                                  ;
08067EE4 6228    str    r0,[r5,20h]                            ;
08067EE6 E00A    b      8067EFEh                                ;
08067EE8 69E8    ldr    r0,[r5,1Ch]                            ;
08067EEA 3001    add    r0,1h                                  ;
08067EEC 61E8    str    r0,[r5,1Ch]                            ;
08067EEE E006    b      8067EFEh                                ;
08067EF0 6A68    ldr    r0,[r5,24h]                            ;
08067EF2 3001    add    r0,1h                                  ;
08067EF4 6268    str    r0,[r5,24h]                            ;
08067EF6 E002    b      8067EFEh                                ;
08067EF8 6AA8    ldr    r0,[r5,28h]                            ;
08067EFA 3001    add    r0,1h                                  ;
08067EFC 62A8    str    r0,[r5,28h]                            ;
08067EFE 403E    and    r6,r7                                  ;
08067F00 0070    lsl    r0,r6,1h                                ;
08067F02 4C11    ldr    r4,=8833C80h                            ;
08067F04 1900    add    r0,r0,r4                                ;
08067F06 8801    ldrh    r1,[r0]                                ;Magic !
08067F08 4810    ldr    r0,=40Dh                                ;[0d1037, Exile of the Wicked]
08067F0A 4281    cmp    r1,r0                                  ;
08067F0C DC5F    bgt    8067FCEh                                ;
08067F0E 3801    sub    r0,1h                                  ;
08067F10 4281    cmp    r1,r0                                  ;
08067F12 DB00    blt    8067F16h                                ;
08067F14 E3A2    b      806865Ch                                ;
08067F16 480E    ldr    r0,=297h                                ;
08067F18 4281    cmp    r1,r0                                  ;
08067F1A DC29    bgt    8067F70h                                ;
08067F1C 3802    sub    r0,2h                                  ;
08067F1E 4281    cmp    r1,r0                                  ;
08067F20 DB00    blt    8067F24h                                ;
08067F22 E39B    b      806865Ch                                ;
08067F24 20AD    mov    r0,0ADh                                ;
08067F26 0040    lsl    r0,r0,1h                                ;
08067F28 4281    cmp    r1,r0                                  ;
08067F2A DC13    bgt    8067F54h                                ;
08067F2C 3804    sub    r0,4h                                  ;
08067F2E 4281    cmp    r1,r0                                  ;
08067F30 DB00    blt    8067F34h                                ;
08067F32 E38F    b      8068654h                                ;
08067F34 3807    sub    r0,7h                                  ;
08067F36 4281    cmp    r1,r0                                  ;
08067F38 DA00    bge    8067F3Ch                                ;
08067F3A E3A6    b      806868Ah                                ;
08067F3C 3001    add    r0,1h                                  ;
08067F3E 4281    cmp    r1,r0                                  ;
08067F40 DC00    bgt    8067F44h                                ;
08067F42 E38B    b      806865Ch                                ;
08067F44 E382    b      806864Ch                                ;
08067F46 0000    lsl    r0,r0,0h                                ;
08067F48 3C80    sub    r4,80h                                  ;
08067F4A 0883    lsr    r3,r0,2h                                ;
08067F4C 040D    lsl    r5,r1,10h                              ;
08067F4E 0000    lsl    r0,r0,0h                                ;
08067F50 0297    lsl    r7,r2,0Ah                              ;
08067F52 0000    lsl    r0,r0,0h                                ;
08067F54 4803    ldr    r0,=28Fh                                ;
08067F56 4281    cmp    r1,r0                                  ;
08067F58 D100    bne    8067F5Ch                                ;
08067F5A E37F    b      806865Ch                                ;
08067F5C 4281    cmp    r1,r0                                  ;
08067F5E DC03    bgt    8067F68h                                ;
08067F60 3803    sub    r0,3h                                  ;
08067F62 E32A    b      80685BAh                                ;
08067F64 028F    lsl    r7,r1,0Ah                              ;
08067F66 0000    lsl    r0,r0,0h                                ;
08067F68 4800    ldr    r0,=293h                                ;
08067F6A E326    b      80685BAh                                ;
08067F6C 0293    lsl    r3,r2,0Ah                              ;
08067F6E 0000    lsl    r0,r0,0h                                ;
08067F70 4806    ldr    r0,=3EEh                                ;
08067F72 4281    cmp    r1,r0                                  ;
08067F74 D100    bne    8067F78h                                ;
08067F76 E369    b      806864Ch                                ;
08067F78 4281    cmp    r1,r0                                  ;
08067F7A DC17    bgt    8067FACh                                ;
08067F7C 3826    sub    r0,26h                                  ;
08067F7E 4281    cmp    r1,r0                                  ;
08067F80 D100    bne    8067F84h                                ;
08067F82 E377    b      8068674h                                ;
08067F84 4281    cmp    r1,r0                                  ;
08067F86 DC05    bgt    8067F94h                                ;
08067F88 4801    ldr    r0,=29Fh                                ;
08067F8A E008    b      8067F9Eh                                ;
08067F8C 03EE    lsl    r6,r5,0Fh                              ;
08067F8E 0000    lsl    r0,r0,0h                                ;
08067F90 029F    lsl    r7,r3,0Ah                              ;
08067F92 0000    lsl    r0,r0,0h                                ;
08067F94 4804    ldr    r0,=3E9h                                ;
08067F96 4281    cmp    r1,r0                                  ;
08067F98 D100    bne    8067F9Ch                                ;
08067F9A E35F    b      806865Ch                                ;
08067F9C 3003    add    r0,3h                                  ;
08067F9E 4281    cmp    r1,r0                                  ;
08067FA0 D100    bne    8067FA4h                                ;
08067FA2 E35F    b      8068664h                                ;
08067FA4 E371    b      806868Ah                                ;
08067FA6 0000    lsl    r0,r0,0h                                ;
08067FA8 03E9    lsl    r1,r5,0Fh                              ;
08067FAA 0000    lsl    r0,r0,0h                                ;
08067FAC 20FC    mov    r0,0FCh                                ;
08067FAE 0080    lsl    r0,r0,2h                                ;
08067FB0 4281    cmp    r1,r0                                  ;
08067FB2 D100    bne    8067FB6h                                ;
08067FB4 E35A    b      806866Ch                                ;
08067FB6 4281    cmp    r1,r0                                  ;
08067FB8 DA00    bge    8067FBCh                                ;
08067FBA E34B    b      8068654h                                ;
08067FBC 3001    add    r0,1h                                  ;
08067FBE 4281    cmp    r1,r0                                  ;
08067FC0 D100    bne    8067FC4h                                ;
08067FC2 E34F    b      8068664h                                ;
08067FC4 3001    add    r0,1h                                  ;
08067FC6 4281    cmp    r1,r0                                  ;
08067FC8 D100    bne    8067FCCh                                ;
08067FCA E353    b      8068674h                                ;
08067FCC E35D    b      806868Ah                                ;
08067FCE 2091    mov    r0,91h                                  ;
08067FD0 00C0    lsl    r0,r0,3h                                ;
08067FD2 4281    cmp    r1,r0                                  ;
08067FD4 DC28    bgt    8068028h                                ;
08067FD6 3801    sub    r0,1h                                  ;
08067FD8 4281    cmp    r1,r0                                  ;
08067FDA DB00    blt    8067FDEh                                ;
08067FDC E346    b      806866Ch                                ;
08067FDE 3855    sub    r0,55h                                  ;
08067FE0 4281    cmp    r1,r0                                  ;
08067FE2 D045    beq    8068070h                                ;
08067FE4 4281    cmp    r1,r0                                  ;
08067FE6 DC0F    bgt    8068008h                                ;
08067FE8 380D    sub    r0,0Dh                                  ;
08067FEA 4281    cmp    r1,r0                                  ;
08067FEC D100    bne    8067FF0h                                ;
08067FEE E339    b      8068664h                                ;
08067FF0 4281    cmp    r1,r0                                  ;
08067FF2 DC01    bgt    8067FF8h                                ;
08067FF4 3816    sub    r0,16h                                  ;
08067FF6 E2FA    b      80685EEh                                ;
08067FF8 4802    ldr    r0,=42Bh                                ;
08067FFA 4281    cmp    r1,r0                                  ;
08067FFC D100    bne    8068000h                                ;
08067FFE E32D    b      806865Ch                                ;
08068000 3002    add    r0,2h                                  ;
08068002 E2E0    b      80685C6h                                ;
08068004 042B    lsl    r3,r5,10h                              ;
08068006 0000    lsl    r0,r0,0h                                ;
08068008 4806    ldr    r0,=434h                                ;
0806800A 4281    cmp    r1,r0                                  ;
0806800C DC00    bgt    8068010h                                ;
0806800E E316    b      806863Eh                                ;
08068010 3004    add    r0,4h                                  ;
08068012 4281    cmp    r1,r0                                  ;
08068014 DD00    ble    8068018h                                ;
08068016 E338    b      806868Ah                                ;
08068018 3801    sub    r0,1h                                  ;
0806801A 4281    cmp    r1,r0                                  ;
0806801C DA00    bge    8068020h                                ;
0806801E E334    b      806868Ah                                ;
08068020 E320    b      8068664h                                ;
08068022 0000    lsl    r0,r0,0h                                ;
08068024 0434    lsl    r4,r6,10h                              ;
08068026 0000    lsl    r0,r0,0h                                ;
08068028 4806    ldr    r0,=522h                                ;
0806802A 4281    cmp    r1,r0                                  ;
0806802C D100    bne    8068030h                                ;
0806802E E306    b      806863Eh                                ;
08068030 4281    cmp    r1,r0                                  ;
08068032 DC0D    bgt    8068050h                                ;
08068034 386F    sub    r0,6Fh                                  ;
08068036 4281    cmp    r1,r0                                  ;
08068038 D100    bne    806803Ch                                ;
0806803A E300    b      806863Eh                                ;
0806803C 4281    cmp    r1,r0                                  ;
0806803E DC03    bgt    8068048h                                ;
08068040 3818    sub    r0,18h                                  ;
08068042 E2DD    b      8068600h                                ;
08068044 0522    lsl    r2,r4,14h                              ;
08068046 0000    lsl    r0,r0,0h                                ;
08068048 4800    ldr    r0,=4BBh                                ;
0806804A E2B6    b      80685BAh                                ;
0806804C 04BB    lsl    r3,r7,12h                              ;
0806804E 0000    lsl    r0,r0,0h                                ;
08068050 20C1    mov    r0,0C1h                                ;
08068052 00C0    lsl    r0,r0,3h                                ;
08068054 4281    cmp    r1,r0                                  ;
08068056 DC04    bgt    8068062h                                ;
08068058 3803    sub    r0,3h                                  ;
0806805A 4281    cmp    r1,r0                                  ;
0806805C DA0C    bge    8068078h                                ;
0806805E 385A    sub    r0,5Ah                                  ;
08068060 E2AB    b      80685BAh                                ;
08068062 4802    ldr    r0,=60Ah                                ;
08068064 4281    cmp    r1,r0                                  ;
08068066 D100    bne    806806Ah                                ;
08068068 E300    b      806866Ch                                ;
0806806A E30E    b      806868Ah                                ;
0806806C 060A    lsl    r2,r1,18h                              ;
0806806E 0000    lsl    r0,r0,0h                                ;
08068070 6AE8    ldr    r0,[r5,2Ch]                            ;
08068072 3001    add    r0,1h                                  ;
08068074 62E8    str    r0,[r5,2Ch]                            ;
08068076 E308    b      806868Ah                                ;
08068078 6E28    ldr    r0,[r5,60h]                            ;
0806807A 3001    add    r0,1h                                  ;
0806807C 6628    str    r0,[r5,60h]                            ;
0806807E E304    b      806868Ah                                ;
08068080 4281    cmp    r1,r0                                  ;
08068082 DB05    blt    8068090h                                ;
08068084 20EF    mov    r0,0EFh                                ;
08068086 00C0    lsl    r0,r0,3h                                ;r0 = [0d1912, The Winged Dragon of Ra]
08068088 4281    cmp    r1,r0                                  ;
0806808A DC01    bgt    8068090h                                ;if (r1 > 0d1912 [The Winged Dragon of Ra]), branch to 08068090
0806808C 2001    mov    r0,1h                                  ;r0 = 1
0806808E E024    b      80680DAh                                ;branch to 080680DA
08068090 1C30    mov    r0,r6                                  ;... That's Token monsters, they shouldn't be in the deck
08068092 4038    and    r0,r7                                  ;
08068094 0080    lsl    r0,r0,2h                                ;
08068096 4906    ldr    r1,=8832B84h                            ;
08068098 1840    add    r0,r0,r1                                ;
0806809A 6800    ldr    r0,[r0]                                ;
0806809C 4018    and    r0,r3                                  ;
0806809E 0D00    lsr    r0,r0,14h                              ;
080680A0 2816    cmp    r0,16h                                  ;
080680A2 D00A    beq    80680BAh                                ;
080680A4 2816    cmp    r0,16h                                  ;
080680A6 DC05    bgt    80680B4h                                ;
080680A8 2815    cmp    r0,15h                                  ;
080680AA D008    beq    80680BEh                                ;
080680AC E00B    b      80680C6h                                ;
080680AE 0000    lsl    r0,r0,0h                                ;
080680B0 2B84    cmp    r3,84h                                  ;
080680B2 0883    lsr    r3,r0,2h                                ;
080680B4 2817    cmp    r0,17h                                  ;
080680B6 D004    beq    80680C2h                                ;
080680B8 E005    b      80680C6h                                ;
080680BA 2007    mov    r0,7h                                  ;r0 = 7
080680BC E00D    b      80680DAh                                ;branch to 080680DA
080680BE 2008    mov    r0,8h                                  ;r0 = 8
080680C0 E00B    b      80680DAh                                ;branch to 080680DA
080680C2 2009    mov    r0,9h                                  ;r0 = 9
080680C4 E009    b      80680DAh                                ;branch to 080680DA
080680C6 1C30    mov    r0,r6                                  ;
080680C8 4038    and    r0,r7                                  ;
080680CA 0080    lsl    r0,r0,2h                                ;
080680CC 4A06    ldr    r2,=8832B84h                            ;
080680CE 1880    add    r0,r0,r2                                ;r0 = pointer_to_card_stats_array + ((r6 & r7) << 2)
080680D0 6800    ldr    r0,[r0]                                ;r0 = current_card_stats
080680D2 21C0    mov    r1,0C0h                                ;
080680D4 0309    lsl    r1,r1,0Ch                              ;
080680D6 4008    and    r0,r1                                  ;r0 & 0xC0000
080680D8 0C80    lsr    r0,r0,12h                              ;r0 >> 18
080680DA 2801    cmp    r0,1h                                  ;
080680DC D011    beq    8068102h                                ;if (r0 == 1), branch to 08068102
080680DE 2801    cmp    r0,1h                                  ;
080680E0 DC04    bgt    80680ECh                                ;if (r0 > 1), branch to 080680EC
080680E2 2800    cmp    r0,0h                                  ;
080680E4 D005    beq    80680F2h                                ;if (r0 == 0), branch to 080680F2
080680E6 E00F    b      8068108h                                ;else branch to 8068108
080680E8 2B84    cmp    r3,84h                                  ;-
080680EA 0883    lsr    r3,r0,2h                                ;-
080680EC 2803    cmp    r0,3h                                  ;
080680EE D004    beq    80680FAh                                ;if (r0 == 3), branch to 080680FA
080680F0 E00A    b      8068108h                                ;else branch to 8068108
080680F2 6828    ldr    r0,[r5]                                ;
080680F4 3001    add    r0,1h                                  ;
080680F6 6028    str    r0,[r5]                                ;[r5]++
080680F8 E006    b      8068108h                                ;branch to 08068108
080680FA 68A8    ldr    r0,[r5,8h]                              ;
080680FC 3001    add    r0,1h                                  ;
080680FE 60A8    str    r0,[r5,8h]                              ;[r5+0x8]++
08068100 E002    b      8068108h                                ;branch to 08068108
08068102 6868    ldr    r0,[r5,4h]                              ;
08068104 3001    add    r0,1h                                  ;
08068106 6068    str    r0,[r5,4h]                              ;[r5+0x4]++
08068108 1C30    mov    r0,r6                                  ;
0806810A 4038    and    r0,r7                                  ;
0806810C 0040    lsl    r0,r0,1h                                ;
0806810E 4C04    ldr    r4,=8833C80h                            ;
08068110 1900    add    r0,r0,r4                                ;
08068112 8801    ldrh    r1,[r0]                                ;
08068114 4803    ldr    r0,=776h                                ;
08068116 4281    cmp    r1,r0                                  ;
08068118 D106    bne    8068128h                                ;
0806811A 2003    mov    r0,3h                                  ;
0806811C E031    b      8068182h                                ;branch to 08068182
0806811E 0000    lsl    r0,r0,0h                                ;
08068120 3C80    sub    r4,80h                                  ;
08068122 0883    lsr    r3,r0,2h                                ;
08068124 0776    lsl    r6,r6,1Dh                              ;
08068126 0000    lsl    r0,r0,0h                                ;
08068128 4281    cmp    r1,r0                                  ;
0806812A DB05    blt    8068138h                                ;
0806812C 20EF    mov    r0,0EFh                                ;
0806812E 00C0    lsl    r0,r0,3h                                ;
08068130 4281    cmp    r1,r0                                  ;
08068132 DC01    bgt    8068138h                                ;
08068134 2001    mov    r0,1h                                  ;
08068136 E024    b      8068182h                                ;branch to 08068182
08068138 1C30    mov    r0,r6                                  ;
0806813A 4038    and    r0,r7                                  ;
0806813C 0080    lsl    r0,r0,2h                                ;
0806813E 4906    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068140 1840    add    r0,r0,r1                                ;
08068142 6800    ldr    r0,[r0]                                ;
08068144 4018    and    r0,r3                                  ;
08068146 0D00    lsr    r0,r0,14h                              ;
08068148 2816    cmp    r0,16h                                  ;
0806814A D00A    beq    8068162h                                ;
0806814C 2816    cmp    r0,16h                                  ;
0806814E DC05    bgt    806815Ch                                ;
08068150 2815    cmp    r0,15h                                  ;
08068152 D008    beq    8068166h                                ;
08068154 E00B    b      806816Eh                                ;
08068156 0000    lsl    r0,r0,0h                                ;
08068158 2B84    cmp    r3,84h                                  ;
0806815A 0883    lsr    r3,r0,2h                                ;
0806815C 2817    cmp    r0,17h                                  ;
0806815E D004    beq    806816Ah                                ;
08068160 E005    b      806816Eh                                ;
08068162 2007    mov    r0,7h                                  ;r0 = 7
08068164 E00D    b      8068182h                                ;branch to 08068182
08068166 2008    mov    r0,8h                                  ;r0 = 8
08068168 E00B    b      8068182h                                ;branch to 08068182
0806816A 2009    mov    r0,9h                                  ;r0 = 9
0806816C E009    b      8068182h                                ;branch to 08068182
0806816E 1C30    mov    r0,r6                                  ;
08068170 4038    and    r0,r7                                  ;
08068172 0080    lsl    r0,r0,2h                                ;
08068174 4A0C    ldr    r2,=8832B84h                            ;
08068176 1880    add    r0,r0,r2                                ;
08068178 6800    ldr    r0,[r0]                                ;
0806817A 21C0    mov    r1,0C0h                                ;
0806817C 0309    lsl    r1,r1,0Ch                              ;
0806817E 4008    and    r0,r1                                  ;
08068180 0C80    lsr    r0,r0,12h                              ;
08068182 2803    cmp    r0,3h                                  ;
08068184 D100    bne    8068188h                                ;if (r0 ≠ 3)n branch to 08068188
08068186 E0C8    b      806831Ah                                ;else branch to 806831A
08068188 1C30    mov    r0,r6                                  ;
0806818A 4038    and    r0,r7                                  ;
0806818C 0080    lsl    r0,r0,2h                                ;
0806818E 4C06    ldr    r4,=8832B84h                            ;
08068190 1900    add    r0,r0,r4                                ;
08068192 6800    ldr    r0,[r0]                                ;
08068194 4018    and    r0,r3                                  ;
08068196 0D00    lsr    r0,r0,14h                              ;
08068198 2815    cmp    r0,15h                                  ;
0806819A DB0B    blt    80681B4h                                ;
0806819C 2817    cmp    r0,17h                                  ;
0806819E DD05    ble    80681ACh                                ;
080681A0 2818    cmp    r0,18h                                  ;
080681A2 D005    beq    80681B0h                                ;
080681A4 E006    b      80681B4h                                ;
080681A6 0000    lsl    r0,r0,0h                                ;
080681A8 2B84    cmp    r3,84h                                  ;
080681AA 0883    lsr    r3,r0,2h                                ;
080681AC 2000    mov    r0,0h                                  ;r0 = 0
080681AE E00B    b      80681C8h                                ;branch to 080681C8
080681B0 200A    mov    r0,0Ah                                  ;r0 = 0xA
080681B2 E009    b      80681C8h                                ;branch to 080681C8
080681B4 1C30    mov    r0,r6                                  ;
080681B6 4038    and    r0,r7                                  ;
080681B8 0080    lsl    r0,r0,2h                                ;
080681BA 4909    ldr    r1,=8832B84h                            ;
080681BC 1840    add    r0,r0,r1                                ;
080681BE 6800    ldr    r0,[r0]                                ;
080681C0 21F0    mov    r1,0F0h                                ;
080681C2 0549    lsl    r1,r1,15h                              ;
080681C4 4008    and    r0,r1                                  ;
080681C6 0E40    lsr    r0,r0,19h                              ;
080681C8 2800    cmp    r0,0h                                  ;
080681CA DA00    bge    80681CEh                                ;
080681CC E0A2    b      8068314h                                ;
080681CE 2804    cmp    r0,4h                                  ;
080681D0 DD08    ble    80681E4h                                ;
080681D2 2806    cmp    r0,6h                                  ;
080681D4 DD00    ble    80681D8h                                ;
080681D6 E09D    b      8068314h                                ;
080681D8 6D68    ldr    r0,[r5,54h]                            ;
080681DA 3001    add    r0,1h                                  ;
080681DC 6568    str    r0,[r5,54h]                            ;
080681DE E09C    b      806831Ah                                ;branch to 0806831A


==Trunk management==
==Trunk management==

Revision as of 00:35, 21 August 2022

Chip tiny.png The following article is a ROM map for Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel.

Cards stats

Display card ATK

0800FC50 B570     push    r4-r6,r14                       ;
0800FC52 0400     lsl     r0,r0,10h                       ;
0800FC54 0C04     lsr     r4,r0,10h                       ;
0800FC56 0409     lsl     r1,r1,10h                       ;
0800FC58 0C0D     lsr     r5,r1,10h                       ;
0800FC5A 0412     lsl     r2,r2,10h                       ;
0800FC5C 0C16     lsr     r6,r2,10h                       ;
0800FC5E F7FFFFED bl      800FC3Ch                        ;
0800FC62 4809     ldr     r0,=2013E00h                    ;
0800FC64 8044     strh    r4,[r0,2h]                      ;r4 = card_id
0800FC66 4809     ldr     r0,=7FFh                        ;
0800FC68 4020     and     r0,r4                           ;
0800FC6A 0080     lsl     r0,r0,2h                        ;Ensures card_id < 2048
0800FC6C 4908     ldr     r1,=8832B84h                    ;
0800FC6E 1840     add     r0,r0,r1                        ;r0 = 0x8832B84 + ((card_ID & 0x7FF) << 2)
0800FC70 6800     ldr     r0,[r0]                         ;r0 = [compressed_card_data_array]
0800FC72 21F8     mov     r1,0F8h                         ;
0800FC74 0449     lsl     r1,r1,11h                       ;
0800FC76 4008     and     r0,r1                           ;r0 &= 0x1F00000
0800FC78 0D00     lsr     r0,r0,14h                       ;r0 >> 20
0800FC7A 2815     cmp     r0,15h                          ;
0800FC7C DB0F     blt     800FC9Eh                        ;if (card_type < 0x15 [is a monster card]), branch to 0x800FC9E
0800FC7E 2817     cmp     r0,17h                          ;
0800FC80 DD08     ble     800FC94h                        ;if (card_type ≤ 0x17 [is not a monster card]), branch to 0x800FC94
0800FC82 2818     cmp     r0,18h                          ;
0800FC84 D008     beq     800FC98h                        ;if (card_type == DIVINE_BEAST), branch to 0x800FC98
0800FC86 E00A     b       800FC9Eh                        ;else branch to 0x800FC9E (default for Monster cards)
0800FC88 3E00     sub     r6,0h                           ;
0800FC8A 0201     lsl     r1,r0,8h                        ;
0800FC8C 07FF     lsl     r7,r7,1Fh                       ;
0800FC8E 0000     lsl     r0,r0,0h                        ;
0800FC90 2B84     cmp     r3,84h                          ;
0800FC92 0883     lsr     r3,r0,2h                        ;
0800FC94 2000     mov     r0,0h                           ;if (card_type ≤ 0x17 [is not a monster card]), ATK = 0
0800FC96 E00D     b       800FCB4h                        ;branch to 0x800FCB4 (store 0 into [0x02013E2C])
0800FC98 20FA     mov     r0,0FAh                         ;if (card_type == DIVINE_BEAST) ...
0800FC9A 0100     lsl     r0,r0,4h                        ;ATK = 4000
0800FC9C E00A     b       800FCB4h                        ;branch to 0x800FCB4 (store 4000 into [0x02013E2C])
0800FC9E 480F     ldr     r0,=7FFh                        ;if (card_type < 0x15 [is a monster card])
0800FCA0 4020     and     r0,r4                           ;Ensures card_id < 2048
0800FCA2 0080     lsl     r0,r0,2h                        ;r0 = (card_id & 0x7FF) << 2
0800FCA4 4B0E     ldr     r3,=8832B84h                    ;
0800FCA6 18C0     add     r0,r0,r3                        ;r0 = 0x8832B84 + ((0x7FF & card_ID) << 2)
0800FCA8 6801     ldr     r1,[r0]                         ;r1 = [compressed_card_data_array]
0800FCAA 0389     lsl     r1,r1,0Eh                       ;
0800FCAC 0DC9     lsr     r1,r1,17h                       ;
0800FCAE 0088     lsl     r0,r1,2h                        ;
0800FCB0 1840     add     r0,r0,r1                        ;
0800FCB2 0040     lsl     r0,r0,1h                        ;r0 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1)
0800FCB4 4A0B     ldr     r2,=2013E00h                    ;
0800FCB6 62D0     str     r0,[r2,2Ch]                     ;Store card ATK into [0x02013E2C]
0800FCB8 4808     ldr     r0,=7FFh                        ;
0800FCBA 4020     and     r0,r4                           ;
0800FCBC 0080     lsl     r0,r0,2h                        ;
0800FCBE 4908     ldr     r1,=8832B84h                    ;
0800FCC0 1840     add     r0,r0,r1                        ;r0 = 0x8832B84 + ((r0 & r4) << 2)
0800FCC2 6800     ldr     r0,[r0]                         ;
0800FCC4 21F8     mov     r1,0F8h                         ;
0800FCC6 0449     lsl     r1,r1,11h                       ;r1 = 0x1F00000
0800FCC8 4008     and     r0,r1                           ;r0  &= r1
0800FCCA 0D00     lsr     r0,r0,14h                       ;r0 >>= 20
0800FCCC 2815     cmp     r0,15h                          ;
0800FCCE DB10     blt     800FCF2h                        ;if (card_type < 0x15), branch to 0x800FCF2
0800FCD0 2817     cmp     r0,17h                          ;
0800FCD2 DD09     ble     800FCE8h                        ;if (card_type ≤ 0x17), branch to 0x800FCE8
0800FCD4 2818     cmp     r0,18h                          ;
0800FCD6 D009     beq     800FCECh                        ;if (card_type == DIVINE_BEAST), branch to 0x800FCEC
0800FCD8 E00B     b       800FCF2h                        ;else branch to 0x800FCF2 (default for Monster cards)
0800FCDA 0000     lsl     r0,r0,0h                        ;

? (CPU deck ?)

Super-long routine checking a lot of card IDs in the deck

08067C1A 4C15     ldr     r4,=7FFh                                ;
08067C1C 1C27     mov     r7,r4                                   ;r7 = 0x7FF
08067C1E 23F8     mov     r3,0F8h                                 ;
08067C20 045B     lsl     r3,r3,11h                               ;
08067C22 2001     mov     r0,1h                                   ;
08067C24 4649     mov     r1,r9                                   ;
08067C26 4008     and     r0,r1                                   ;
08067C28 4644     mov     r4,r8                                   ;
08067C2A 00A1     lsl     r1,r4,2h                                ;
08067C2C 4350     mul     r0,r2                                   ;
08067C2E 1809     add     r1,r1,r0                                ;
08067C30 4810     ldr     r0,=20197A8h                            ;
08067C32 1809     add     r1,r1,r0                                ;
08067C34 6808     ldr     r0,[r1]                                 ;
08067C36 0500     lsl     r0,r0,14h                               ;
08067C38 0D06     lsr     r6,r0,14h                               ;
08067C3A 1C31     mov     r1,r6                                   ;
08067C3C 4039     and     r1,r7                                   ;
08067C3E 0088     lsl     r0,r1,2h                                ;
08067C40 4C0D     ldr     r4,=8832B84h                            ;
08067C42 1902     add     r2,r0,r4                                ;
08067C44 6810     ldr     r0,[r2]                                 ;
08067C46 4018     and     r0,r3                                   ;
08067C48 0D00     lsr     r0,r0,14h                               ;
08067C4A 2815     cmp     r0,15h                                  ;
08067C4C D01A     beq     8067C84h                                ;
08067C4E 2816     cmp     r0,16h                                  ;
08067C50 D100     bne     8067C54h                                ;
08067C52 E128     b       8067EA6h                                ;
08067C54 0048     lsl     r0,r1,1h                                ;r0 = current_card_id << 1
08067C56 4909     ldr     r1,=8833C80h                            ;r1 = pointer_to_internal_cards_ids_array
08067C58 1840     add     r0,r0,r1                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
08067C5A 8801     ldrh    r1,[r0]                                 ;r1 = internal_card_id
08067C5C 4808     ldr     r0,=776h                                ;
08067C5E 4281     cmp     r1,r0                                   ;
08067C60 D000     beq     8067C64h                                ;if (r1 == 0d1910 [Obelisk the Tormentor]), branch to 08067C64
08067C62 E20D     b       8068080h                                ;else branch to 08068080
08067C64 2003     mov     r0,3h                                   ;r0 = 3
08067C66 E238     b       80680DAh                                ;branch to 080680DA
08067C68 8FE4     ldrh    r4,[r4,3Eh]                             ;
08067C6A 0201     lsl     r1,r0,8h                                ;
08067C6C 0D64     lsr     r4,r4,15h                               ;
08067C6E 0000     lsl     r0,r0,0h                                ;
08067C70 07FF     lsl     r7,r7,1Fh                               ;
08067C72 0000     lsl     r0,r0,0h                                ;
08067C74 97A8     str     r7,[sp,2A0h]                            ;
08067C76 0201     lsl     r1,r0,8h                                ;
08067C78 2B84     cmp     r3,84h                                  ;
08067C7A 0883     lsr     r3,r0,2h                                ;
08067C7C 3C80     sub     r4,80h                                  ;
08067C7E 0883     lsr     r3,r0,2h                                ;
08067C80 0776     lsl     r6,r6,1Dh                               ;
08067C82 0000     lsl     r0,r0,0h                                ;
08067C84 6968     ldr     r0,[r5,14h]                             ;
08067C86 3001     add     r0,1h                                   ;
08067C88 6168     str     r0,[r5,14h]                             ;
08067C8A 6811     ldr     r1,[r2]                                 ;r1 = [r2]
08067C8C 1C08     mov     r0,r1                                   ;r0 = r1
08067C8E 4018     and     r0,r3                                   ;
08067C90 0D00     lsr     r0,r0,14h                               ;
08067C92 2816     cmp     r0,16h                                  ;
08067C94 DC06     bgt     8067CA4h                                ;
08067C96 2815     cmp     r0,15h                                  ;
08067C98 DB04     blt     8067CA4h                                ;
08067C9A 20E0     mov     r0,0E0h                                 ;
08067C9C 0300     lsl     r0,r0,0Ch                               ;r0 = 0x1C00000
08067C9E 4001     and     r1,r0                                   ;r1 &= r0
08067CA0 0C48     lsr     r0,r1,11h                               ;r0 = r1 >> 17
08067CA2 E000     b       8067CA6h                                ;branch to 08067CA6
08067CA4 2000     mov     r0,0h                                   ;
08067CA6 2803     cmp     r0,3h                                   ;
08067CA8 D009     beq     8067CBEh                                ;if (r0 == 3), branch to 08067CBE
08067CAA 2803     cmp     r0,3h                                   ;
08067CAC DC02     bgt     8067CB4h                                ;if (r0 > 3), branch to 08067CB4
08067CAE 2802     cmp     r0,2h                                   ;
08067CB0 D00D     beq     8067CCEh                                ;if (r0 == 2), branch to 08067CCE
08067CB2 E013     b       8067CDCh                                ;else branch to 08067CDC
08067CB4 2804     cmp     r0,4h                                   ;
08067CB6 D006     beq     8067CC6h                                ;if (r0 == 4), branch to 08067CC6
08067CB8 2805     cmp     r0,5h                                   ;
08067CBA D00C     beq     8067CD6h                                ;if (r0 == 5), branch to 08067CD6
08067CBC E00E     b       8067CDCh                                ;else branch to 08067CDC
08067CBE 6A28     ldr     r0,[r5,20h]                             ;
08067CC0 3001     add     r0,1h                                   ;
08067CC2 6228     str     r0,[r5,20h]                             ;[r5 + 0x20]++
08067CC4 E00A     b       8067CDCh                                ;branch to 08067CDC
08067CC6 69E8     ldr     r0,[r5,1Ch]                             ;
08067CC8 3001     add     r0,1h                                   ;
08067CCA 61E8     str     r0,[r5,1Ch]                             ;[r5 + 0x1C]++
08067CCC E006     b       8067CDCh                                ;branch to 08067CDC
08067CCE 6A68     ldr     r0,[r5,24h]                             ;
08067CD0 3001     add     r0,1h                                   ;
08067CD2 6268     str     r0,[r5,24h]                             ;[r5 + 0x24]++
08067CD4 E002     b       8067CDCh                                ;branch to 08067CDC
08067CD6 6AA8     ldr     r0,[r5,28h]                             ;
08067CD8 3001     add     r0,1h                                   ;
08067CDA 62A8     str     r0,[r5,28h]                             ;[r5 + 0x28]++
08067CDC 403E     and     r6,r7                                   ;current_card_id &= 0x7FF
08067CDE 0070     lsl     r0,r6,1h                                ;r0 = current_card_id << 1
08067CE0 4A0F     ldr     r2,=8833C80h                            ;r2 = pointer_to_internal_cards_ids_array
08067CE2 1880     add     r0,r0,r2                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
08067CE4 8801     ldrh    r1,[r0]                                 ;r1 = internal_card_id
08067CE6 480F     ldr     r0,=40Eh                                ;r0 = 0x40E [0d1038]
08067CE8 4281     cmp     r1,r0                                   ;
08067CEA D101     bne     8067CF0h                                ;if (internal_card_id ≠ 0d1038 [Magic Thorns]), branch to 08067CF0
08067CEC F000FCB2 bl      8068654h                                ;else call 0x8068654
08067CF0 4281     cmp     r1,r0                                   ;
08067CF2 DC5F     bgt     8067DB4h                                ;if (internal_card_id > 0d1038), branch to 08067DB4
08067CF4 3845     sub     r0,45h                                  ;r0 = 0x3C9 [0d969]
08067CF6 4281     cmp     r1,r0                                   ;
08067CF8 D100     bne     8067CFCh                                ;if (internal_card_id ≠ 0d969 [Chain Destruction]), branch to 08067CFC
08067CFA E1B9     b       8068070h                                ;else branch to 08068070
08067CFC 4281     cmp     r1,r0                                   ;
08067CFE DC2D     bgt     8067D5Ch                                ;if (internal_card_id > 0d969), branch to 08067D5C
08067D00 4809     ldr     r0,=2ADh                                ;r0 = 0x2AD [0d685]
08067D02 4281     cmp     r1,r0                                   ;
08067D04 D100     bne     8067D08h                                ;if (internal_card_id ≠ 0d685 [Widespread Ruin]), branch to 08067D08
08067D06 E1B3     b       8068070h                                ;else branch to 08068070
08067D08 4281     cmp     r1,r0                                   ;
08067D0A DC13     bgt     8067D34h                                ;if (internal_card_id > 0d685), branch to 08067D34
08067D0C 381C     sub     r0,1Ch                                  ;
08067D0E 4281     cmp     r1,r0                                   ;
08067D10 D101     bne     8067D16h                                ;if (internal_card_id ≠ 0d657 [Metalmorph]), branch to 08067D16
08067D12 F000FC94 bl      806863Eh                                ;else branch to 0806863E
08067D16 4281     cmp     r1,r0                                   ;
08067D18 DC08     bgt     8067D2Ch                                ;if (internal_card_id > 0d657), branch to 08067D2C
08067D1A 20AE     mov     r0,0AEh                                 ;else r0 = 0xAE
08067D1C 0040     lsl     r0,r0,1h                                ;r0 << 1 [0x15C ; 0d348 ; Spellbinding Circle]
08067D1E E083     b       8067E28h                                ;branch to 08067E28
08067D20 3C80     sub     r4,80h                                  ;-
08067D22 0883     lsr     r3,r0,2h                                ;-
08067D24 040E     lsl     r6,r1,10h                               ;-
08067D26 0000     lsl     r0,r0,0h                                ;-
08067D28 02AD     lsl     r5,r5,0Ah                               ;-
08067D2A 0000     lsl     r0,r0,0h                                ;-
08067D2C 4800     ldr     r0,=2A9h                                ;... if (internal_card_id > 0d657), r0 = 0x2A9 [0d681 ; Eatgaboon]
08067D2E E031     b       8067D94h                                ;branch to 08067D94
08067D30 02A9     lsl     r1,r5,0Ah                               ;-
08067D32 0000     lsl     r0,r0,0h                                ;-
08067D34 4804     ldr     r0,=3ABh                                ;... if (internal_card_id > 0d685), r0 = 0x3AB [0d939 ; Bell of Destruction]
08067D36 4281     cmp     r1,r0                                   ;
08067D38 D101     bne     8067D3Eh                                ;if (internal_card_id ≠ 0d939 [Bell of Destruction]), branch to 08067D3E
08067D3A F000FC8B bl      8068654h                                ;else call 08068654
08067D3E 4281     cmp     r1,r0                                   ;
08067D40 DC04     bgt     8067D4Ch                                ;if (internal_card_id > 0d939), branch to 08067D4C
08067D42 38FA     sub     r0,0FAh                                 ;r0 = 0d689 [Fake Trap in DM6, unused]
08067D44 E070     b       8067E28h                                ;branch to 08067E28
08067D46 0000     lsl     r0,r0,0h                                ;-
08067D48 03AB     lsl     r3,r5,0Eh                               ;-
08067D4A 0000     lsl     r0,r0,0h                                ;-
08067D4C 4802     ldr     r0,=3B1h                                ;... if (internal_card_id > 0d939), r0 = 0x3B1 [0d945, Magical Hats]
08067D4E 4281     cmp     r1,r0                                   ;
08067D50 D100     bne     8067D54h                                ;if (internal_card_id ≠ 0d945 [Magical Hats]), branch to 08067D54
08067D52 E18D     b       8068070h                                ;else branch to 08068070
08067D54 300F     add     r0,0Fh                                  ;r0 = 0x3C0 [0d960, Negate Attack]
08067D56 E067     b       8067E28h                                ;branch to 08067E28
08067D58 03B1     lsl     r1,r6,0Eh                               ;
08067D5A 0000     lsl     r0,r0,0h                                ;
08067D5C 4806     ldr     r0,=3FBh                                ;... if (internal_card_id > 0d969), r0 = 0x3FB [0d1019, White Hole]
08067D5E 4281     cmp     r1,r0                                   ;
08067D60 D100     bne     8067D64h                                ;
08067D62 E185     b       8068070h                                ;
08067D64 4281     cmp     r1,r0                                   ;
08067D66 DC0D     bgt     8067D84h                                ;
08067D68 3811     sub     r0,11h                                  ;
08067D6A 4281     cmp     r1,r0                                   ;
08067D6C D100     bne     8067D70h                                ;
08067D6E E17F     b       8068070h                                ;
08067D70 4281     cmp     r1,r0                                   ;
08067D72 DC03     bgt     8067D7Ch                                ;
08067D74 380C     sub     r0,0Ch                                  ;
08067D76 E057     b       8067E28h                                ;
08067D78 03FB     lsl     r3,r7,0Fh                               ;
08067D7A 0000     lsl     r0,r0,0h                                ;
08067D7C 20FE     mov     r0,0FEh                                 ;
08067D7E 0080     lsl     r0,r0,2h                                ;
08067D80 F000FBCF bl      8068522h                                ;call 08068522
08067D84 4808     ldr     r0,=407h                                ;Traps ! [0d1031, Horn of Heaven]
08067D86 4281     cmp     r1,r0                                   ;
08067D88 DC10     bgt     8067DACh                                ;
08067D8A 3803     sub     r0,3h                                   ;
08067D8C 4281     cmp     r1,r0                                   ;
08067D8E DB00     blt     8067D92h                                ;
08067D90 E16E     b       8068070h                                ;branch to 08068070
08067D92 3806     sub     r0,6h                                   ;
08067D94 4281     cmp     r1,r0                                   ;
08067D96 DD01     ble     8067D9Ch                                ;
08067D98 F000FC77 bl      806868Ah                                ;
08067D9C 3801     sub     r0,1h                                   ;
08067D9E 4281     cmp     r1,r0                                   ;
08067DA0 DA01     bge     8067DA6h                                ;
08067DA2 F000FC72 bl      806868Ah                                ;
08067DA6 E163     b       8068070h                                ;
08067DA8 0407     lsl     r7,r0,10h                               ;
08067DAA 0000     lsl     r0,r0,0h                                ;
08067DAC 4800     ldr     r0,=409h                                ;[0d1033, Royal Decree]
08067DAE E03B     b       8067E28h                                ;branch to 08067E28
08067DB0 0409     lsl     r1,r1,10h                               ;
08067DB2 0000     lsl     r0,r0,0h                                ;
08067DB4 480A     ldr     r0,=49Ah                                ;[0d1178, Aqua Chorus]
08067DB6 4281     cmp     r1,r0                                   ;
08067DB8 D101     bne     8067DBEh                                ;
08067DBA F000FC40 bl      806863Eh                                ;
08067DBE 4281     cmp     r1,r0                                   ;
08067DC0 DC3A     bgt     8067E38h                                ;
08067DC2 3853     sub     r0,53h                                  ;
08067DC4 4281     cmp     r1,r0                                   ;
08067DC6 D101     bne     8067DCCh                                ;
08067DC8 F000FC50 bl      806866Ch                                ;
08067DCC 4281     cmp     r1,r0                                   ;
08067DCE DC13     bgt     8067DF8h                                ;
08067DD0 3821     sub     r0,21h                                  ;
08067DD2 4281     cmp     r1,r0                                   ;
08067DD4 D100     bne     8067DD8h                                ;
08067DD6 E14B     b       8068070h                                ;
08067DD8 4281     cmp     r1,r0                                   ;
08067DDA DC03     bgt     8067DE4h                                ;
08067DDC 3806     sub     r0,6h                                   ;
08067DDE E023     b       8067E28h                                ;
08067DE0 049A     lsl     r2,r3,12h                               ;
08067DE2 0000     lsl     r0,r0,0h                                ;
08067DE4 4803     ldr     r0,=43Ah                                ;[0d1082, Snake Fang]
08067DE6 4281     cmp     r1,r0                                   ;
08067DE8 D101     bne     8067DEEh                                ;
08067DEA F000FC28 bl      806863Eh                                ;
08067DEE 300A     add     r0,0Ah                                  ;
08067DF0 F000FC06 bl      8068600h                                ;
08067DF4 043A     lsl     r2,r7,10h                               ;
08067DF6 0000     lsl     r0,r0,0h                                ;
08067DF8 4807     ldr     r0,=475h                                ;[0d1141, Appropriate]
08067DFA 4281     cmp     r1,r0                                   ;
08067DFC D101     bne     8067E02h                                ;
08067DFE F000FC39 bl      8068674h                                ;
08067E02 4281     cmp     r1,r0                                   ;
08067E04 DC0A     bgt     8067E1Ch                                ;
08067E06 382B     sub     r0,2Bh                                  ;
08067E08 4281     cmp     r1,r0                                   ;
08067E0A D101     bne     8067E10h                                ;
08067E0C F000FC1E bl      806864Ch                                ;
08067E10 302A     add     r0,2Ah                                  ;
08067E12 F000FBF5 bl      8068600h                                ;
08067E16 0000     lsl     r0,r0,0h                                ;
08067E18 0475     lsl     r5,r6,11h                               ;
08067E1A 0000     lsl     r0,r0,0h                                ;
08067E1C 4805     ldr     r0,=47Bh                                ;[0d1147, Backup Soldier]
08067E1E 4281     cmp     r1,r0                                   ;
08067E20 D101     bne     8067E26h                                ;
08067E22 F000FC23 bl      806866Ch                                ;
08067E26 3007     add     r0,7h                                   ;
08067E28 4281     cmp     r1,r0                                   ;
08067E2A D100     bne     8067E2Eh                                ;
08067E2C E120     b       8068070h                                ;
08067E2E F000FC2C bl      806868Ah                                ;
08067E32 0000     lsl     r0,r0,0h                                ;
08067E34 047B     lsl     r3,r7,11h                               ;
08067E36 0000     lsl     r0,r0,0h                                ;
08067E38 4807     ldr     r0,=519h                                ;[0d1305, Solemn Wishes]
08067E3A 4281     cmp     r1,r0                                   ;
08067E3C D101     bne     8067E42h                                ;
08067E3E F000FC05 bl      806864Ch                                ;
08067E42 4281     cmp     r1,r0                                   ;
08067E44 DC14     bgt     8067E70h                                ;
08067E46 3804     sub     r0,4h                                   ;
08067E48 4281     cmp     r1,r0                                   ;
08067E4A D100     bne     8067E4Eh                                ;
08067E4C E110     b       8068070h                                ;
08067E4E 4281     cmp     r1,r0                                   ;
08067E50 DC04     bgt     8067E5Ch                                ;
08067E52 3857     sub     r0,57h                                  ;
08067E54 F000FBCB bl      80685EEh                                ;
08067E58 0519     lsl     r1,r3,14h                               ;
08067E5A 0000     lsl     r0,r0,0h                                ;
08067E5C 4803     ldr     r0,=516h                                ;[0d1302, Minor Goblin Official]
08067E5E 4281     cmp     r1,r0                                   ;
08067E60 D101     bne     8067E66h                                ;
08067E62 F000FBF7 bl      8068654h                                ;
08067E66 3002     add     r0,2h                                   ;
08067E68 E3C1     b       80685EEh                                ;
08067E6A 0000     lsl     r0,r0,0h                                ;
08067E6C 0516     lsl     r6,r2,14h                               ;
08067E6E 0000     lsl     r0,r0,0h                                ;
08067E70 4806     ldr     r0,=5A7h                                ;[0d1447, Jar of Greed]
08067E72 4281     cmp     r1,r0                                   ;
08067E74 D101     bne     8067E7Ah                                ;
08067E76 F000FBFD bl      8068674h                                ;
08067E7A 4281     cmp     r1,r0                                   ;
08067E7C DC08     bgt     8067E90h                                ;
08067E7E 388D     sub     r0,8Dh                                  ;
08067E80 4281     cmp     r1,r0                                   ;
08067E82 D101     bne     8067E88h                                ;
08067E84 F000FBE6 bl      8068654h                                ;
08067E88 3012     add     r0,12h                                  ;
08067E8A E3B0     b       80685EEh                                ;
08067E8C 05A7     lsl     r7,r4,16h                               ;
08067E8E 0000     lsl     r0,r0,0h                                ;
08067E90 20BF     mov     r0,0BFh                                 ;
08067E92 00C0     lsl     r0,r0,3h                                ;
08067E94 4281     cmp     r1,r0                                   ;
08067E96 D100     bne     8067E9Ah                                ;
08067E98 E0EE     b       8068078h                                ;
08067E9A 3003     add     r0,3h                                   ;
08067E9C 4281     cmp     r1,r0                                   ;
08067E9E D001     beq     8067EA4h                                ;
08067EA0 F000FBF3 bl      806868Ah                                ;
08067EA4 E0E4     b       8068070h                                ;
08067EA6 6928     ldr     r0,[r5,10h]                             ;
08067EA8 3001     add     r0,1h                                   ;
08067EAA 6128     str     r0,[r5,10h]                             ;
08067EAC 6811     ldr     r1,[r2]                                 ;
08067EAE 1C08     mov     r0,r1                                   ;
08067EB0 4018     and     r0,r3                                   ;
08067EB2 0D00     lsr     r0,r0,14h                               ;
08067EB4 2816     cmp     r0,16h                                  ;
08067EB6 DC06     bgt     8067EC6h                                ;
08067EB8 2815     cmp     r0,15h                                  ;
08067EBA DB04     blt     8067EC6h                                ;
08067EBC 20E0     mov     r0,0E0h                                 ;
08067EBE 0300     lsl     r0,r0,0Ch                               ;
08067EC0 4001     and     r1,r0                                   ;
08067EC2 0C48     lsr     r0,r1,11h                               ;
08067EC4 E000     b       8067EC8h                                ;
08067EC6 2000     mov     r0,0h                                   ;
08067EC8 2803     cmp     r0,3h                                   ;
08067ECA D009     beq     8067EE0h                                ;
08067ECC 2803     cmp     r0,3h                                   ;
08067ECE DC02     bgt     8067ED6h                                ;
08067ED0 2802     cmp     r0,2h                                   ;
08067ED2 D00D     beq     8067EF0h                                ;
08067ED4 E013     b       8067EFEh                                ;
08067ED6 2804     cmp     r0,4h                                   ;
08067ED8 D006     beq     8067EE8h                                ;
08067EDA 2805     cmp     r0,5h                                   ;
08067EDC D00C     beq     8067EF8h                                ;
08067EDE E00E     b       8067EFEh                                ;
08067EE0 6A28     ldr     r0,[r5,20h]                             ;
08067EE2 3001     add     r0,1h                                   ;
08067EE4 6228     str     r0,[r5,20h]                             ;
08067EE6 E00A     b       8067EFEh                                ;
08067EE8 69E8     ldr     r0,[r5,1Ch]                             ;
08067EEA 3001     add     r0,1h                                   ;
08067EEC 61E8     str     r0,[r5,1Ch]                             ;
08067EEE E006     b       8067EFEh                                ;
08067EF0 6A68     ldr     r0,[r5,24h]                             ;
08067EF2 3001     add     r0,1h                                   ;
08067EF4 6268     str     r0,[r5,24h]                             ;
08067EF6 E002     b       8067EFEh                                ;
08067EF8 6AA8     ldr     r0,[r5,28h]                             ;
08067EFA 3001     add     r0,1h                                   ;
08067EFC 62A8     str     r0,[r5,28h]                             ;
08067EFE 403E     and     r6,r7                                   ;
08067F00 0070     lsl     r0,r6,1h                                ;
08067F02 4C11     ldr     r4,=8833C80h                            ;
08067F04 1900     add     r0,r0,r4                                ;
08067F06 8801     ldrh    r1,[r0]                                 ;Magic !
08067F08 4810     ldr     r0,=40Dh                                ;[0d1037, Exile of the Wicked]
08067F0A 4281     cmp     r1,r0                                   ;
08067F0C DC5F     bgt     8067FCEh                                ;
08067F0E 3801     sub     r0,1h                                   ;
08067F10 4281     cmp     r1,r0                                   ;
08067F12 DB00     blt     8067F16h                                ;
08067F14 E3A2     b       806865Ch                                ;
08067F16 480E     ldr     r0,=297h                                ;
08067F18 4281     cmp     r1,r0                                   ;
08067F1A DC29     bgt     8067F70h                                ;
08067F1C 3802     sub     r0,2h                                   ;
08067F1E 4281     cmp     r1,r0                                   ;
08067F20 DB00     blt     8067F24h                                ;
08067F22 E39B     b       806865Ch                                ;
08067F24 20AD     mov     r0,0ADh                                 ;
08067F26 0040     lsl     r0,r0,1h                                ;
08067F28 4281     cmp     r1,r0                                   ;
08067F2A DC13     bgt     8067F54h                                ;
08067F2C 3804     sub     r0,4h                                   ;
08067F2E 4281     cmp     r1,r0                                   ;
08067F30 DB00     blt     8067F34h                                ;
08067F32 E38F     b       8068654h                                ;
08067F34 3807     sub     r0,7h                                   ;
08067F36 4281     cmp     r1,r0                                   ;
08067F38 DA00     bge     8067F3Ch                                ;
08067F3A E3A6     b       806868Ah                                ;
08067F3C 3001     add     r0,1h                                   ;
08067F3E 4281     cmp     r1,r0                                   ;
08067F40 DC00     bgt     8067F44h                                ;
08067F42 E38B     b       806865Ch                                ;
08067F44 E382     b       806864Ch                                ;
08067F46 0000     lsl     r0,r0,0h                                ;
08067F48 3C80     sub     r4,80h                                  ;
08067F4A 0883     lsr     r3,r0,2h                                ;
08067F4C 040D     lsl     r5,r1,10h                               ;
08067F4E 0000     lsl     r0,r0,0h                                ;
08067F50 0297     lsl     r7,r2,0Ah                               ;
08067F52 0000     lsl     r0,r0,0h                                ;
08067F54 4803     ldr     r0,=28Fh                                ;
08067F56 4281     cmp     r1,r0                                   ;
08067F58 D100     bne     8067F5Ch                                ;
08067F5A E37F     b       806865Ch                                ;
08067F5C 4281     cmp     r1,r0                                   ;
08067F5E DC03     bgt     8067F68h                                ;
08067F60 3803     sub     r0,3h                                   ;
08067F62 E32A     b       80685BAh                                ;
08067F64 028F     lsl     r7,r1,0Ah                               ;
08067F66 0000     lsl     r0,r0,0h                                ;
08067F68 4800     ldr     r0,=293h                                ;
08067F6A E326     b       80685BAh                                ;
08067F6C 0293     lsl     r3,r2,0Ah                               ;
08067F6E 0000     lsl     r0,r0,0h                                ;
08067F70 4806     ldr     r0,=3EEh                                ;
08067F72 4281     cmp     r1,r0                                   ;
08067F74 D100     bne     8067F78h                                ;
08067F76 E369     b       806864Ch                                ;
08067F78 4281     cmp     r1,r0                                   ;
08067F7A DC17     bgt     8067FACh                                ;
08067F7C 3826     sub     r0,26h                                  ;
08067F7E 4281     cmp     r1,r0                                   ;
08067F80 D100     bne     8067F84h                                ;
08067F82 E377     b       8068674h                                ;
08067F84 4281     cmp     r1,r0                                   ;
08067F86 DC05     bgt     8067F94h                                ;
08067F88 4801     ldr     r0,=29Fh                                ;
08067F8A E008     b       8067F9Eh                                ;
08067F8C 03EE     lsl     r6,r5,0Fh                               ;
08067F8E 0000     lsl     r0,r0,0h                                ;
08067F90 029F     lsl     r7,r3,0Ah                               ;
08067F92 0000     lsl     r0,r0,0h                                ;
08067F94 4804     ldr     r0,=3E9h                                ;
08067F96 4281     cmp     r1,r0                                   ;
08067F98 D100     bne     8067F9Ch                                ;
08067F9A E35F     b       806865Ch                                ;
08067F9C 3003     add     r0,3h                                   ;
08067F9E 4281     cmp     r1,r0                                   ;
08067FA0 D100     bne     8067FA4h                                ;
08067FA2 E35F     b       8068664h                                ;
08067FA4 E371     b       806868Ah                                ;
08067FA6 0000     lsl     r0,r0,0h                                ;
08067FA8 03E9     lsl     r1,r5,0Fh                               ;
08067FAA 0000     lsl     r0,r0,0h                                ;
08067FAC 20FC     mov     r0,0FCh                                 ;
08067FAE 0080     lsl     r0,r0,2h                                ;
08067FB0 4281     cmp     r1,r0                                   ;
08067FB2 D100     bne     8067FB6h                                ;
08067FB4 E35A     b       806866Ch                                ;
08067FB6 4281     cmp     r1,r0                                   ;
08067FB8 DA00     bge     8067FBCh                                ;
08067FBA E34B     b       8068654h                                ;
08067FBC 3001     add     r0,1h                                   ;
08067FBE 4281     cmp     r1,r0                                   ;
08067FC0 D100     bne     8067FC4h                                ;
08067FC2 E34F     b       8068664h                                ;
08067FC4 3001     add     r0,1h                                   ;
08067FC6 4281     cmp     r1,r0                                   ;
08067FC8 D100     bne     8067FCCh                                ;
08067FCA E353     b       8068674h                                ;
08067FCC E35D     b       806868Ah                                ;
08067FCE 2091     mov     r0,91h                                  ;
08067FD0 00C0     lsl     r0,r0,3h                                ;
08067FD2 4281     cmp     r1,r0                                   ;
08067FD4 DC28     bgt     8068028h                                ;
08067FD6 3801     sub     r0,1h                                   ;
08067FD8 4281     cmp     r1,r0                                   ;
08067FDA DB00     blt     8067FDEh                                ;
08067FDC E346     b       806866Ch                                ;
08067FDE 3855     sub     r0,55h                                  ;
08067FE0 4281     cmp     r1,r0                                   ;
08067FE2 D045     beq     8068070h                                ;
08067FE4 4281     cmp     r1,r0                                   ;
08067FE6 DC0F     bgt     8068008h                                ;
08067FE8 380D     sub     r0,0Dh                                  ;
08067FEA 4281     cmp     r1,r0                                   ;
08067FEC D100     bne     8067FF0h                                ;
08067FEE E339     b       8068664h                                ;
08067FF0 4281     cmp     r1,r0                                   ;
08067FF2 DC01     bgt     8067FF8h                                ;
08067FF4 3816     sub     r0,16h                                  ;
08067FF6 E2FA     b       80685EEh                                ;
08067FF8 4802     ldr     r0,=42Bh                                ;
08067FFA 4281     cmp     r1,r0                                   ;
08067FFC D100     bne     8068000h                                ;
08067FFE E32D     b       806865Ch                                ;
08068000 3002     add     r0,2h                                   ;
08068002 E2E0     b       80685C6h                                ;
08068004 042B     lsl     r3,r5,10h                               ;
08068006 0000     lsl     r0,r0,0h                                ;
08068008 4806     ldr     r0,=434h                                ;
0806800A 4281     cmp     r1,r0                                   ;
0806800C DC00     bgt     8068010h                                ;
0806800E E316     b       806863Eh                                ;
08068010 3004     add     r0,4h                                   ;
08068012 4281     cmp     r1,r0                                   ;
08068014 DD00     ble     8068018h                                ;
08068016 E338     b       806868Ah                                ;
08068018 3801     sub     r0,1h                                   ;
0806801A 4281     cmp     r1,r0                                   ;
0806801C DA00     bge     8068020h                                ;
0806801E E334     b       806868Ah                                ;
08068020 E320     b       8068664h                                ;
08068022 0000     lsl     r0,r0,0h                                ;
08068024 0434     lsl     r4,r6,10h                               ;
08068026 0000     lsl     r0,r0,0h                                ;
08068028 4806     ldr     r0,=522h                                ;
0806802A 4281     cmp     r1,r0                                   ;
0806802C D100     bne     8068030h                                ;
0806802E E306     b       806863Eh                                ;
08068030 4281     cmp     r1,r0                                   ;
08068032 DC0D     bgt     8068050h                                ;
08068034 386F     sub     r0,6Fh                                  ;
08068036 4281     cmp     r1,r0                                   ;
08068038 D100     bne     806803Ch                                ;
0806803A E300     b       806863Eh                                ;
0806803C 4281     cmp     r1,r0                                   ;
0806803E DC03     bgt     8068048h                                ;
08068040 3818     sub     r0,18h                                  ;
08068042 E2DD     b       8068600h                                ;
08068044 0522     lsl     r2,r4,14h                               ;
08068046 0000     lsl     r0,r0,0h                                ;
08068048 4800     ldr     r0,=4BBh                                ;
0806804A E2B6     b       80685BAh                                ;
0806804C 04BB     lsl     r3,r7,12h                               ;
0806804E 0000     lsl     r0,r0,0h                                ;
08068050 20C1     mov     r0,0C1h                                 ;
08068052 00C0     lsl     r0,r0,3h                                ;
08068054 4281     cmp     r1,r0                                   ;
08068056 DC04     bgt     8068062h                                ;
08068058 3803     sub     r0,3h                                   ;
0806805A 4281     cmp     r1,r0                                   ;
0806805C DA0C     bge     8068078h                                ;
0806805E 385A     sub     r0,5Ah                                  ;
08068060 E2AB     b       80685BAh                                ;
08068062 4802     ldr     r0,=60Ah                                ;
08068064 4281     cmp     r1,r0                                   ;
08068066 D100     bne     806806Ah                                ;
08068068 E300     b       806866Ch                                ;
0806806A E30E     b       806868Ah                                ;
0806806C 060A     lsl     r2,r1,18h                               ;
0806806E 0000     lsl     r0,r0,0h                                ;
08068070 6AE8     ldr     r0,[r5,2Ch]                             ;
08068072 3001     add     r0,1h                                   ;
08068074 62E8     str     r0,[r5,2Ch]                             ;
08068076 E308     b       806868Ah                                ;
08068078 6E28     ldr     r0,[r5,60h]                             ;
0806807A 3001     add     r0,1h                                   ;
0806807C 6628     str     r0,[r5,60h]                             ;
0806807E E304     b       806868Ah                                ;
08068080 4281     cmp     r1,r0                                   ;
08068082 DB05     blt     8068090h                                ;
08068084 20EF     mov     r0,0EFh                                 ;
08068086 00C0     lsl     r0,r0,3h                                ;r0 = [0d1912, The Winged Dragon of Ra]
08068088 4281     cmp     r1,r0                                   ;
0806808A DC01     bgt     8068090h                                ;if (r1 > 0d1912 [The Winged Dragon of Ra]), branch to 08068090
0806808C 2001     mov     r0,1h                                   ;r0 = 1
0806808E E024     b       80680DAh                                ;branch to 080680DA
08068090 1C30     mov     r0,r6                                   ;... That's Token monsters, they shouldn't be in the deck
08068092 4038     and     r0,r7                                   ;
08068094 0080     lsl     r0,r0,2h                                ;
08068096 4906     ldr     r1,=8832B84h                            ;
08068098 1840     add     r0,r0,r1                                ;
0806809A 6800     ldr     r0,[r0]                                 ;
0806809C 4018     and     r0,r3                                   ;
0806809E 0D00     lsr     r0,r0,14h                               ;
080680A0 2816     cmp     r0,16h                                  ;
080680A2 D00A     beq     80680BAh                                ;
080680A4 2816     cmp     r0,16h                                  ;
080680A6 DC05     bgt     80680B4h                                ;
080680A8 2815     cmp     r0,15h                                  ;
080680AA D008     beq     80680BEh                                ;
080680AC E00B     b       80680C6h                                ;
080680AE 0000     lsl     r0,r0,0h                                ;
080680B0 2B84     cmp     r3,84h                                  ;
080680B2 0883     lsr     r3,r0,2h                                ;
080680B4 2817     cmp     r0,17h                                  ;
080680B6 D004     beq     80680C2h                                ;
080680B8 E005     b       80680C6h                                ;
080680BA 2007     mov     r0,7h                                   ;r0 = 7
080680BC E00D     b       80680DAh                                ;branch to 080680DA
080680BE 2008     mov     r0,8h                                   ;r0 = 8
080680C0 E00B     b       80680DAh                                ;branch to 080680DA
080680C2 2009     mov     r0,9h                                   ;r0 = 9
080680C4 E009     b       80680DAh                                ;branch to 080680DA
080680C6 1C30     mov     r0,r6                                   ;
080680C8 4038     and     r0,r7                                   ;
080680CA 0080     lsl     r0,r0,2h                                ;
080680CC 4A06     ldr     r2,=8832B84h                            ;
080680CE 1880     add     r0,r0,r2                                ;r0 = pointer_to_card_stats_array + ((r6 & r7) << 2)
080680D0 6800     ldr     r0,[r0]                                 ;r0 = current_card_stats
080680D2 21C0     mov     r1,0C0h                                 ;
080680D4 0309     lsl     r1,r1,0Ch                               ;
080680D6 4008     and     r0,r1                                   ;r0 & 0xC0000
080680D8 0C80     lsr     r0,r0,12h                               ;r0 >> 18
080680DA 2801     cmp     r0,1h                                   ;
080680DC D011     beq     8068102h                                ;if (r0 == 1), branch to 08068102
080680DE 2801     cmp     r0,1h                                   ;
080680E0 DC04     bgt     80680ECh                                ;if (r0 > 1), branch to 080680EC
080680E2 2800     cmp     r0,0h                                   ;
080680E4 D005     beq     80680F2h                                ;if (r0 == 0), branch to 080680F2
080680E6 E00F     b       8068108h                                ;else branch to 8068108
080680E8 2B84     cmp     r3,84h                                  ;-
080680EA 0883     lsr     r3,r0,2h                                ;-
080680EC 2803     cmp     r0,3h                                   ;
080680EE D004     beq     80680FAh                                ;if (r0 == 3), branch to 080680FA
080680F0 E00A     b       8068108h                                ;else branch to 8068108
080680F2 6828     ldr     r0,[r5]                                 ;
080680F4 3001     add     r0,1h                                   ;
080680F6 6028     str     r0,[r5]                                 ;[r5]++
080680F8 E006     b       8068108h                                ;branch to 08068108
080680FA 68A8     ldr     r0,[r5,8h]                              ;
080680FC 3001     add     r0,1h                                   ;
080680FE 60A8     str     r0,[r5,8h]                              ;[r5+0x8]++
08068100 E002     b       8068108h                                ;branch to 08068108
08068102 6868     ldr     r0,[r5,4h]                              ;
08068104 3001     add     r0,1h                                   ;
08068106 6068     str     r0,[r5,4h]                              ;[r5+0x4]++
08068108 1C30     mov     r0,r6                                   ;
0806810A 4038     and     r0,r7                                   ;
0806810C 0040     lsl     r0,r0,1h                                ;
0806810E 4C04     ldr     r4,=8833C80h                            ;
08068110 1900     add     r0,r0,r4                                ;
08068112 8801     ldrh    r1,[r0]                                 ;
08068114 4803     ldr     r0,=776h                                ;
08068116 4281     cmp     r1,r0                                   ;
08068118 D106     bne     8068128h                                ;
0806811A 2003     mov     r0,3h                                   ;
0806811C E031     b       8068182h                                ;branch to 08068182
0806811E 0000     lsl     r0,r0,0h                                ;
08068120 3C80     sub     r4,80h                                  ;
08068122 0883     lsr     r3,r0,2h                                ;
08068124 0776     lsl     r6,r6,1Dh                               ;
08068126 0000     lsl     r0,r0,0h                                ;
08068128 4281     cmp     r1,r0                                   ;
0806812A DB05     blt     8068138h                                ;
0806812C 20EF     mov     r0,0EFh                                 ;
0806812E 00C0     lsl     r0,r0,3h                                ;
08068130 4281     cmp     r1,r0                                   ;
08068132 DC01     bgt     8068138h                                ;
08068134 2001     mov     r0,1h                                   ;
08068136 E024     b       8068182h                                ;branch to 08068182
08068138 1C30     mov     r0,r6                                   ;
0806813A 4038     and     r0,r7                                   ;
0806813C 0080     lsl     r0,r0,2h                                ;
0806813E 4906     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068140 1840     add     r0,r0,r1                                ;
08068142 6800     ldr     r0,[r0]                                 ;
08068144 4018     and     r0,r3                                   ;
08068146 0D00     lsr     r0,r0,14h                               ;
08068148 2816     cmp     r0,16h                                  ;
0806814A D00A     beq     8068162h                                ;
0806814C 2816     cmp     r0,16h                                  ;
0806814E DC05     bgt     806815Ch                                ;
08068150 2815     cmp     r0,15h                                  ;
08068152 D008     beq     8068166h                                ;
08068154 E00B     b       806816Eh                                ;
08068156 0000     lsl     r0,r0,0h                                ;
08068158 2B84     cmp     r3,84h                                  ;
0806815A 0883     lsr     r3,r0,2h                                ;
0806815C 2817     cmp     r0,17h                                  ;
0806815E D004     beq     806816Ah                                ;
08068160 E005     b       806816Eh                                ;
08068162 2007     mov     r0,7h                                   ;r0 = 7
08068164 E00D     b       8068182h                                ;branch to 08068182
08068166 2008     mov     r0,8h                                   ;r0 = 8
08068168 E00B     b       8068182h                                ;branch to 08068182
0806816A 2009     mov     r0,9h                                   ;r0 = 9
0806816C E009     b       8068182h                                ;branch to 08068182
0806816E 1C30     mov     r0,r6                                   ;
08068170 4038     and     r0,r7                                   ;
08068172 0080     lsl     r0,r0,2h                                ;
08068174 4A0C     ldr     r2,=8832B84h                            ;
08068176 1880     add     r0,r0,r2                                ;
08068178 6800     ldr     r0,[r0]                                 ;
0806817A 21C0     mov     r1,0C0h                                 ;
0806817C 0309     lsl     r1,r1,0Ch                               ;
0806817E 4008     and     r0,r1                                   ;
08068180 0C80     lsr     r0,r0,12h                               ;
08068182 2803     cmp     r0,3h                                   ;
08068184 D100     bne     8068188h                                ;if (r0 ≠ 3)n branch to 08068188
08068186 E0C8     b       806831Ah                                ;else branch to 806831A
08068188 1C30     mov     r0,r6                                   ;
0806818A 4038     and     r0,r7                                   ;
0806818C 0080     lsl     r0,r0,2h                                ;
0806818E 4C06     ldr     r4,=8832B84h                            ;
08068190 1900     add     r0,r0,r4                                ;
08068192 6800     ldr     r0,[r0]                                 ;
08068194 4018     and     r0,r3                                   ;
08068196 0D00     lsr     r0,r0,14h                               ;
08068198 2815     cmp     r0,15h                                  ;
0806819A DB0B     blt     80681B4h                                ;
0806819C 2817     cmp     r0,17h                                  ;
0806819E DD05     ble     80681ACh                                ;
080681A0 2818     cmp     r0,18h                                  ;
080681A2 D005     beq     80681B0h                                ;
080681A4 E006     b       80681B4h                                ;
080681A6 0000     lsl     r0,r0,0h                                ;
080681A8 2B84     cmp     r3,84h                                  ;
080681AA 0883     lsr     r3,r0,2h                                ;
080681AC 2000     mov     r0,0h                                   ;r0 = 0
080681AE E00B     b       80681C8h                                ;branch to 080681C8
080681B0 200A     mov     r0,0Ah                                  ;r0 = 0xA
080681B2 E009     b       80681C8h                                ;branch to 080681C8
080681B4 1C30     mov     r0,r6                                   ;
080681B6 4038     and     r0,r7                                   ;
080681B8 0080     lsl     r0,r0,2h                                ;
080681BA 4909     ldr     r1,=8832B84h                            ;
080681BC 1840     add     r0,r0,r1                                ;
080681BE 6800     ldr     r0,[r0]                                 ;
080681C0 21F0     mov     r1,0F0h                                 ;
080681C2 0549     lsl     r1,r1,15h                               ;
080681C4 4008     and     r0,r1                                   ;
080681C6 0E40     lsr     r0,r0,19h                               ;
080681C8 2800     cmp     r0,0h                                   ;
080681CA DA00     bge     80681CEh                                ;
080681CC E0A2     b       8068314h                                ;
080681CE 2804     cmp     r0,4h                                   ;
080681D0 DD08     ble     80681E4h                                ;
080681D2 2806     cmp     r0,6h                                   ;
080681D4 DD00     ble     80681D8h                                ;
080681D6 E09D     b       8068314h                                ;
080681D8 6D68     ldr     r0,[r5,54h]                             ;
080681DA 3001     add     r0,1h                                   ;
080681DC 6568     str     r0,[r5,54h]                             ;
080681DE E09C     b       806831Ah                                ;branch to 0806831A

Trunk management

Count quantity of cards in Player's Trunk, Deck and Sideboard

0x8AA94 - Loops through Player's inventory to count cards in Player's Trunk, Deck, and Sideboard

0808AA94 21D4     mov     r1,0D4h                                 ;
0808AA96 0000     lsl     r0,r0,0h                                ;
0808AA98 FBC1     bl      lr+782h                                 ;
0808AA9A 0000     lsl     r0,r0,0h                                ;
0808AA9C 10ED     asr     r5,r5,3h                                ;
0808AA9E 0000     lsl     r0,r0,0h                                ;
0808AAA0 21DE     mov     r1,0DEh                                 ;
0808AAA2 0000     lsl     r0,r0,0h                                ;
0808AAA4 2000     mov     r0,0h                                   ;
0808AAA6 BC70     pop     r4-r6                                   ;
0808AAA8 BC02     pop     r1                                      ;
0808AAAA 4708     bx      r1                                      ;
0808AAAC B570     push    r4-r6,r14                               ;
0808AAAE 2300     mov     r3,0h                                   ;
0808AAB0 490C     ldr     r1,=2011C20h                            ;r1 = pointer to Player's Trunk
0808AAB2 2200     mov     r2,0h                                   ;r2 = 0
0808AAB4 1C0D     mov     r5,r1                                   ;r5 = pointer to Player's Trunk
0808AAB6 4C0C     ldr     r4,=10EDh                               ;r4 = 4333
0808AAB8 880E     ldrh    r6,[r1]                                 ;start of the loop, load card_quantity for current card pointed by r1 in r6
0808AABA 18F0     add     r0,r6,r3                                ;r0 = card_quantity + r3
0808AABC 0400     lsl     r0,r0,10h                               ;
0808AABE 0C03     lsr     r3,r0,10h                               ;r3 = current_card_quantity & 0xFFFF
0808AAC0 3102     add     r1,2h                                   ;pointer_to_card_trunk += 2
0808AAC2 1C50     add     r0,r2,1                                 ;r0 = current_card_id
0808AAC4 0400     lsl     r0,r0,10h                               ;r0 << 16
0808AAC6 0C02     lsr     r2,r0,10h                               ;r2 = r0 & 0xFFFF
0808AAC8 42A2     cmp     r2,r4                                   ;
0808AACA D9F5     bls     808AAB8h                                ;if (r2 ≤ 4333 [it's the 1082 valid cards + card_id #0 multiplied by 4 + 1]), loop to 0x808AAB8
0808AACC 43D8     mvn     r0,r3                                   ;r0 = !r3
0808AACE 3001     add     r0,1h                                   ;r0++
0808AAD0 4A06     ldr     r2,=21DEh                               ;r2 = 8670 [it's the 1082 valid cards + card_id #0 multiplied by 8 + an offset of 6 for idk which reason yet]
0808AAD2 18A9     add     r1,r5,r2                                ;r1 = pointer to Player's Trunk + 8670
0808AAD4 8008     strh    r0,[r1]                                 ;r0 = [r1]
0808AAD6 4E06     ldr     r6,=21D4h                               ;
0808AAD8 19A9     add     r1,r5,r6                                ;
0808AADA 4806     ldr     r0,=0FBC1h                              ;
0808AADC 8008     strh    r0,[r1]                                 ;
0808AADE BC70     pop     r4-r6                                   ;
0808AAE0 BC01     pop     r0                                      ;
0808AAE2 4700     bx      r0                                      ;

Add card to Trunk

0808AF0C 3C80     sub     r4,80h                                  ;
0808AF0E 0883     lsr     r3,r0,2h                                ;
0808AF10 F893     bl      lr+126h                                 ;
0808AF12 FFFF     bl      lr+0FFEh                                ;
0808AF14 6070     str     r0,[r6,4h]                              ;
0808AF16 0817     lsr     r7,r2,20h                               ;
0808AF18 B530     push    r4,r5,r14                               ;
0808AF1A 1C04     mov     r4,r0                                   ;
0808AF1C 0424     lsl     r4,r4,10h                               ;
0808AF1E 0C24     lsr     r4,r4,10h                               ;
0808AF20 1C20     mov     r0,r4                                   ;
0808AF22 F7FFFFDF bl      808AEE4h                                ;
0808AF26 4B0C     ldr     r3,=2011C20h                            ;
0808AF28 00A4     lsl     r4,r4,2h                                ;
0808AF2A 18E4     add     r4,r4,r3                                ;r4 = 0x2011C20 + (card_id << 2)
0808AF2C 8922     ldrh    r2,[r4,8h]                              ;r2 = old card quantity
0808AF2E 0591     lsl     r1,r2,16h                               ;
0808AF30 480A     ldr     r0,=0FF800000h                          ;
0808AF32 4281     cmp     r1,r0                                   ;
0808AF34 D80D     bhi     808AF52h                                ;
0808AF36 0D89     lsr     r1,r1,16h                               ;
0808AF38 3101     add     r1,1h                                   ;
0808AF3A 4D09     ldr     r5,=3FFh                                ;
0808AF3C 1C28     mov     r0,r5                                   ;
0808AF3E 4001     and     r1,r0                                   ;
0808AF40 4808     ldr     r0,=0FFFFFC00h                          ;1024 is the maximum quantity for a given card
0808AF42 4010     and     r0,r2                                   ;r2 is old card quantity
0808AF44 4308     orr     r0,r1                                   ;r1 is new card quantity
0808AF46 8120     strh    r0,[r4,8h]                              ;Store new card quantity in [r4 + 8]
0808AF48 4807     ldr     r0,=20C6h                               ;
0808AF4A 1819     add     r1,r3,r0                                ;
0808AF4C 8808     ldrh    r0,[r1]                                 ;
0808AF4E 3001     add     r0,1h                                   ;
0808AF50 8008     strh    r0,[r1]                                 ;
0808AF52 BC30     pop     r4,r5                                   ;
0808AF54 BC01     pop     r0                                      ;
0808AF56 4700     bx      r0                                      ;
0808AF58 1C20     mov     r0,r4                                   ;

Cards data

Cards stats array

0x832B84 to 0x833C7F - Cards stats array, containing Attribute, Type, ATK and DEF

bitmap:
AAAB BBBC CCCC DDEE EEEE EEEF FFFF FFFF
A - Attribute
    If card_type ≤ 0x14
     0 - No Attribute
     1 - LIGHT
     2 - DARK
     3 - WATER
     4 - FIRE
     5 - EARTH
     6 - WIND
     7 - ---
    If card_type ≥ 0x15
     0 - MAGIC
     1 - TRAP
B - Level
C - Card Type
    0 - [] (Monster)
    1 - Dragon
    2 - Zombie
    3 - Fiend
    4 - Pyro
    5 - Sea Serpent
    6 - Rock
    7 - Machine
    8 - Fish
    9 - Dinosaur
    A - Insect
    B - Beast
    C - Beast-Warrior
    D - Plant
    E - Aqua
    F - Warrior
   10 - Winged-Beast
   11 - Fairy
   12 - Spellcaster
   13 - Thunder
   14 - Reptile
   15 - Trap
   16 - Magic
   17 - Ticket ("Cannot be used in duel")
   18 - Divine-Beast ("Cannot be used in duel", displays the unused Divine Attribute, sets the card Level to 10, and displays blank values as the ATK/DEF stats - there's a workaround to display the 4000/4000 stats from the Display ATK and DEF subroutines)
D - Monster category
   If card_type ≤ 0x14
    0 - Normal Monster
    1 - Effect Monster
    2 - Fusion Monster
    3 - Ritual Monster
   If card_type = 0x15, a 3rd bit is used
    0 - Normal
    1 - Counter
    2 - Field
    3 - Equip
    4 - Continuous
    5 - Quick
    6 - Ritual
    7 - [Unknown]
E - ATK ÷ 10
F - DEF ÷ 10

Take this example with Earthbound Spirit (ID #0001).

C8 64 30 A8 => 0xA83064C8
Card ATK :
=> DWORD(((0xA83064C8 << 14 >> 23 << 2) + (0xA83064C8 << 14 >> 23)) << 1) = 0d500
Or :
xxxx xxxx xxxx xxCC CCCC CCCx xxxx xxxx
0b000110010 = 0d50
50 × 10 = 500

Cards internal IDs

  • 0x833C80 to 0x8344FD - List of cards internal IDs, used for example for the CPU deck loading subroutine at 0x67CE0 (to be documented).

Cards names

  • 0x83663C - Card names in 6 languages : Japanese, English, German, French, Italian, Spanish