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.
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
Jump to navigation
Jump to search
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 ?)
? (calls the super long routine)
08067BFE 2000 mov r0,0h ;r0 = 0 08067C00 4680 mov r8,r0 ;r8 = 0 08067C02 4919 ldr r1,=2018FE4h ; 08067C04 2001 mov r0,1h ;r0 = 1 08067C06 464A mov r2,r9 ;r2 = r9 08067C08 4010 and r0,r2 ;r0 & r2 08067C0A 4A18 ldr r2,=0D64h ;r2 = 0xD64 08067C0C 4350 mul r0,r2 ;r0 ×= r2 08067C0E 1840 add r0,r0,r1 ;r0 += r1 08067C10 78C0 ldrb r0,[r0,3h] ;r0 = [r0 + 3] 08067C12 4580 cmp r8,r0 ; 08067C14 DB01 blt 8067C1Ah ;if (r8 < [r0 + 3]), branch to the Super-long routine checking a lot of card IDs in the deck 08067C16 F000FD46 bl 80686A6h ;
Super-long routine checking cards 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 ;r0 = pointer_to_player_deck_during_duel 08067C32 1809 add r1,r1,r0 ;r1 = pointer_to_player_deck_during_duel + pointer_position_in_player_deck 08067C34 6808 ldr r0,[r1] ;r0 = card_id 08067C36 0500 lsl r0,r0,14h ; 08067C38 0D06 lsr r6,r0,14h ; 08067C3A 1C31 mov r1,r6 ;r1 = card_id 08067C3C 4039 and r1,r7 ;r1 & 0x7FF (ensures card_id < 2048) 08067C3E 0088 lsl r0,r1,2h ;r0 = card_id << 2 08067C40 4C0D ldr r4,=8832B84h ;r4 = pointer_to_card_stats_array 08067C42 1902 add r2,r0,r4 ; 08067C44 6810 ldr r0,[r2] ;r0 = card_stats 08067C46 4018 and r0,r3 ; 08067C48 0D00 lsr r0,r0,14h ;r0 = card_type 08067C4A 2815 cmp r0,15h ; 08067C4C D01A beq 8067C84h ;if (card_type == TRAP), branch to 08067C84 08067C4E 2816 cmp r0,16h ; 08067C50 D100 bne 8067C54h ;if (card_type ≠ MAGIC), branch to 08067C54 08067C52 E128 b 8067EA6h ;else if (card_type == MAGIC), branch to 08067EA6 08067C54 0048 lsl r0,r1,1h ;...if (card_type ≠ TRAP && card_type ≠ MAGIC), 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 in DM6, unused]), 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] ;...if (card_type == TRAP) 08067C86 3001 add r0,1h ; 08067C88 6168 str r0,[r5,14h] ;increment number of Trap cards in the deck stored in IWRAM 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 ;[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 ;call 0806868A 08067D9C 3801 sub r0,1h ; 08067D9E 4281 cmp r1,r0 ; 08067DA0 DA01 bge 8067DA6h ; 08067DA2 F000FC72 bl 806868Ah ;call 0806868A 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 ;call 0806868A 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 ;call 0806868A 08067EA4 E0E4 b 8068070h ;branch to 08068070 08067EA6 6928 ldr r0,[r5,10h] ;...if (card_type == MAGIC) 08067EA8 3001 add r0,1h ; 08067EAA 6128 str r0,[r5,10h] ;increment number of Magic cards in the deck stored in IWRAM 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 ;r4 = pointer_to_internal_cards_ids_array 08067F04 1900 add r0,r0,r4 ; 08067F06 8801 ldrh r1,[r0] ; 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 ;[0d663, Eternal Draught] 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 ;branch to 0806868A 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 ;[0d655, Eternal Rest] 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 ;[0d652, Warrior Elimination] 08067F62 E32A b 80685BAh ; 08067F64 028F lsl r7,r1,0Ah ; 08067F66 0000 lsl r0,r0,0h ; 08067F68 4800 ldr r0,=293h ;[0d659, Stain Storm] 08067F6A E326 b 80685BAh ; 08067F6C 0293 lsl r3,r2,0Ah ; 08067F6E 0000 lsl r0,r0,0h ; 08067F70 4806 ldr r0,=3EEh ;[0d1006, Blue Medicine] 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 ;[0d968, Graceful Charity] 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 ;[0d671, Harpie's Feather Duster] 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 ;[0d1001, Fissure] 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 ;branch to 0806868A 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 ;branch to 0806868A 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 ;[0d1067, Final Destiny] 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 ;[0d1076, The Reliable Guardian] 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 ;branch to 0806868A 08068018 3801 sub r0,1h ; 0806801A 4281 cmp r1,r0 ; 0806801C DA00 bge 8068020h ; 0806801E E334 b 806868Ah ;branch to 0806868A 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 ;[0d1314, Limiter Removal] 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 ;[0d1211, Thousand Knives] 0806804A E2B6 b 80685BAh ;branch to 080685BA 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 ;[0d1546, De-Fusion] 08068064 4281 cmp r1,r0 ; 08068066 D100 bne 806806Ah ;if (internal_card_id ≠ DE_FUSION), branch to 0806806A (branch to 0806868A) 08068068 E300 b 806866Ch ;else, branch to 0806866C 0806806A E30E b 806868Ah ;branch to 0806868A 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] ;increment [r5 + 0x2C] 08068076 E308 b 806868Ah ;branch to 0806868A 08068078 6E28 ldr r0,[r5,60h] ; 0806807A 3001 add r0,1h ; 0806807C 6628 str r0,[r5,60h] ;increment [r5 + 0x60] 0806807E E304 b 806868Ah ;branch to 0806868A 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 in DM6, unused] 08068088 4281 cmp r1,r0 ; 0806808A DC01 bgt 8068090h ;if (r1 > 0d1912 [The Winged Dragon of Ra in DM6, unused]), 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 ;r1 = pointer_to_card_stats_array 08068098 1840 add r0,r0,r1 ; 0806809A 6800 ldr r0,[r0] ;r0 = current_card_stats 0806809C 4018 and r0,r3 ; 0806809E 0D00 lsr r0,r0,14h ; 080680A0 2816 cmp r0,16h ; 080680A2 D00A beq 80680BAh ;if (card_type == MAGIC), branch to 080680BA 080680A4 2816 cmp r0,16h ; 080680A6 DC05 bgt 80680B4h ;if (card_type == TICKET || card_type == DIVINE_BEAST), branch to 080680B4 080680A8 2815 cmp r0,15h ; 080680AA D008 beq 80680BEh ;if (card_type == TRAP), branch to 080680BE 080680AC E00B b 80680C6h ;else branch to 080680C6 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 ;if (card_type == TICKET), branch to 080680C2 080680B8 E005 b 80680C6h ;else branch to 080680C6 080680BA 2007 mov r0,7h ;...if (card_type == MAGIC), r0 = 7 080680BC E00D b 80680DAh ;branch to 080680DA 080680BE 2008 mov r0,8h ;...if (card_type == TRAP), r0 = 8 080680C0 E00B b 80680DAh ;branch to 080680DA 080680C2 2009 mov r0,9h ;...if (card_type == TICKET), r0 = 9 080680C4 E009 b 80680DAh ;branch to 080680DA 080680C6 1C30 mov r0,r6 ;...if it is a Monster card 080680C8 4038 and r0,r7 ; 080680CA 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 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 (monster_category == EFFECT_MONSTER), branch to 08068102 080680DE 2801 cmp r0,1h ; 080680E0 DC04 bgt 80680ECh ;if (monster_category > 1), branch to 080680EC 080680E2 2800 cmp r0,0h ; 080680E4 D005 beq 80680F2h ;if (monster_category == NORMAL_MONSTER), 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 (monster_category == RITUAL_MONSTER), branch to 080680FA 080680F0 E00A b 8068108h ;else if (monster_category == FUSION_MONSTER), branch to 8068108 080680F2 6828 ldr r0,[r5] ;...if (monster_category == NORMAL_MONSTER) 080680F4 3001 add r0,1h ; 080680F6 6028 str r0,[r5] ;increment number of Normal Monster cards in the deck stored in IWRAM 080680F8 E006 b 8068108h ;branch to 08068108 080680FA 68A8 ldr r0,[r5,8h] ;if (monster_category == RITUAL_MONSTER) 080680FC 3001 add r0,1h ; 080680FE 60A8 str r0,[r5,8h] ;increments number of Ritual Monster cards in the deck stored in IWRAM 08068100 E002 b 8068108h ;branch to 08068108 08068102 6868 ldr r0,[r5,4h] ;...if (monster_category == EFFECT_MONSTER) 08068104 3001 add r0,1h ; 08068106 6068 str r0,[r5,4h] ;increments number of Effect Monster cards in the deck stored in IWRAM 08068108 1C30 mov r0,r6 ; 0806810A 4038 and r0,r7 ; 0806810C 0040 lsl r0,r0,1h ;r0 = (current_card_id & 0x7FF) << 1 0806810E 4C04 ldr r4,=8833C80h ;r4 = pointer_to_internal_cards_ids_array 08068110 1900 add r0,r0,r4 ;r0 = pointer_to_internal_cards_ids_array + ((current_card_id & 0x7FF) << 1) 08068112 8801 ldrh r1,[r0] ;r1 = internal_card_id 08068114 4803 ldr r0,=776h ; 08068116 4281 cmp r1,r0 ; 08068118 D106 bne 8068128h ;if (internal_card_id ≠ OBELISK_THE_TOURMENTOR), branch to 08068128 0806811A 2003 mov r0,3h ;r0 = 3 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 ;...if (internal_card_id ≠ OBELISK_THE_TOURMENTOR) 0806812A DB05 blt 8068138h ;if (internal_card_id < 1910) [not a God card, not a Token, not an alternate illustration card], branch to 08068138 0806812C 20EF mov r0,0EFh ; 0806812E 00C0 lsl r0,r0,3h ; 08068130 4281 cmp r1,r0 ; 08068132 DC01 bgt 8068138h ;if (internal_card_id > 1912) [not a God card], branch to 08068138 08068134 2001 mov r0,1h ;r0 = 1 08068136 E024 b 8068182h ;branch to 08068182 08068138 1C30 mov r0,r6 ;...if (internal_card_id < 1910 || internal_card_id > 1912) [not a God card] 0806813A 4038 and r0,r7 ; 0806813C 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 0806813E 4906 ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 08068140 1840 add r0,r0,r1 ; 08068142 6800 ldr r0,[r0] ;r0 = card_stats 08068144 4018 and r0,r3 ; 08068146 0D00 lsr r0,r0,14h ; 08068148 2816 cmp r0,16h ; 0806814A D00A beq 8068162h ;if (card_type == MAGIC), branch to 08068162 0806814C 2816 cmp r0,16h ; 0806814E DC05 bgt 806815Ch ;if (card_type == TICKET || card_type == DIVINE_BEAST), branch to 0806815C 08068150 2815 cmp r0,15h ; 08068152 D008 beq 8068166h ;if (card_type == TRAP), branch to 08068166 08068154 E00B b 806816Eh ;else branch to 0806816E 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 ;if (card_type == TICKET), branch to 0806816A 08068160 E005 b 806816Eh ;if (card_type == DIVINE_BEAST), branch to 0806816E 08068162 2007 mov r0,7h ;...if (card_type == MAGIC), r0 = 7 08068164 E00D b 8068182h ;branch to 08068182 08068166 2008 mov r0,8h ;...if (card_type == TRAP), r0 = 8 08068168 E00B b 8068182h ;branch to 08068182 0806816A 2009 mov r0,9h ;...if (card_type == TICKET), r0 = 9 0806816C E009 b 8068182h ;branch to 08068182 0806816E 1C30 mov r0,r6 ;...if (card_type == DIVINE_BEAST) 08068170 4038 and r0,r7 ; 08068172 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 08068174 4A0C ldr r2,=8832B84h ;r1 = pointer_to_card_stats_array 08068176 1880 add r0,r0,r2 ; 08068178 6800 ldr r0,[r0] ;r0 = card_stats 0806817A 21C0 mov r1,0C0h ; 0806817C 0309 lsl r1,r1,0Ch ; 0806817E 4008 and r0,r1 ; 08068180 0C80 lsr r0,r0,12h ;r0 = monster_category 08068182 2803 cmp r0,3h ; 08068184 D100 bne 8068188h ;if (monster_category ≠ RITUAL_MONSTER) [not Obelisk the Tourmentor], branch to 08068188 08068186 E0C8 b 806831Ah ;else branch to 0806831A 08068188 1C30 mov r0,r6 ;...if (monster_category ≠ RITUAL_MONSTER) [not Obelisk the Tourmentor] 0806818A 4038 and r0,r7 ; 0806818C 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 0806818E 4C06 ldr r4,=8832B84h ;r1 = pointer_to_card_stats_array 08068190 1900 add r0,r0,r4 ; 08068192 6800 ldr r0,[r0] ;r0 = card_stats 08068194 4018 and r0,r3 ; 08068196 0D00 lsr r0,r0,14h ;r0 = card_type 08068198 2815 cmp r0,15h ; 0806819A DB0B blt 80681B4h ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 080681B4 0806819C 2817 cmp r0,17h ; 0806819E DD05 ble 80681ACh ;if (card_type ≤ 0x17) [is a Trap, Magic, or Ticket card], branch to 080681AC 080681A0 2818 cmp r0,18h ; 080681A2 D005 beq 80681B0h ;if (card_type == DIVINE_BEAST), branch to 080681B0 080681A4 E006 b 80681B4h ;else branch to 080681B4 080681A6 0000 lsl r0,r0,0h ; 080681A8 2B84 cmp r3,84h ; 080681AA 0883 lsr r3,r0,2h ; 080681AC 2000 mov r0,0h ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r0 = 0 080681AE E00B b 80681C8h ;branch to 080681C8 080681B0 200A mov r0,0Ah ;...if (card_type == DIVINE_BEAST), r0 = 0xA 080681B2 E009 b 80681C8h ;branch to 080681C8 080681B4 1C30 mov r0,r6 ;...if (card_type < 0x15 || card_type > 0x18) [is a non-Divine-Beast Monster card, or is a glitch card] 080681B6 4038 and r0,r7 ; 080681B8 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 080681BA 4909 ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 080681BC 1840 add r0,r0,r1 ; 080681BE 6800 ldr r0,[r0] ;r0 = card_stats 080681C0 21F0 mov r1,0F0h ; 080681C2 0549 lsl r1,r1,15h ; 080681C4 4008 and r0,r1 ; 080681C6 0E40 lsr r0,r0,19h ;r0 = monster_level 080681C8 2800 cmp r0,0h ; 080681CA DA00 bge 80681CEh ;if (monster_level > 0), branch to 080681CE 080681CC E0A2 b 8068314h ;else branch to 08068314 080681CE 2804 cmp r0,4h ;...if (monster_level > 0) 080681D0 DD08 ble 80681E4h ;if (monster_level ≤ 4), branch to 080681E4 080681D2 2806 cmp r0,6h ; 080681D4 DD00 ble 80681D8h ;else if (monster_level ≤ 6), branch to 080681D8 080681D6 E09D b 8068314h ;else branch to 08068314 080681D8 6D68 ldr r0,[r5,54h] ;...if (monster_level == 5 || monster_level == 6) 080681DA 3001 add r0,1h ; 080681DC 6568 str r0,[r5,54h] ;increment number of Level 5 and 6 Monster cards in the deck stored in IWRAM 080681DE E09C b 806831Ah ;branch to 0806831A 080681E0 2B84 cmp r3,84h ;- 080681E2 0883 lsr r3,r0,2h ;- 080681E4 1C30 mov r0,r6 ;...if (monster_level ≤ 4) 080681E6 4038 and r0,r7 ; 080681E8 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 080681EA 4A06 ldr r2,=8832B84h ;r1 = pointer_to_card_stats_array 080681EC 1880 add r0,r0,r2 ; 080681EE 6800 ldr r0,[r0] ;r0 = card_stats 080681F0 4018 and r0,r3 ; 080681F2 0D00 lsr r0,r0,14h ; 080681F4 2815 cmp r0,15h ; 080681F6 DB0C blt 8068212h ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 08068212 080681F8 2817 cmp r0,17h ; 080681FA DD05 ble 8068208h ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068208 080681FC 2818 cmp r0,18h ; 080681FE D005 beq 806820Ch ;if (card_type == DIVINE_BEAST), branch to 0806820C 08068200 E007 b 8068212h ;else branch to 08068212 08068202 0000 lsl r0,r0,0h ;- 08068204 2B84 cmp r3,84h ;- 08068206 0883 lsr r3,r0,2h ;- 08068208 2100 mov r1,0h ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r1 = 0 0806820A E00D b 8068228h ;branch to 08068228 0806820C 21FA mov r1,0FAh ;...if (card_type == DIVINE_BEAST) 0806820E 0109 lsl r1,r1,4h ;card_ATK = 4000 08068210 E00A b 8068228h ;branch to 08068228 08068212 1C30 mov r0,r6 ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card] 08068214 4038 and r0,r7 ; 08068216 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 08068218 4C0C ldr r4,=8832B84h ;r1 = pointer_to_card_stats_array 0806821A 1900 add r0,r0,r4 ; 0806821C 6801 ldr r1,[r0] ;r0 = card_stats 0806821E 0389 lsl r1,r1,0Eh ; 08068220 0DC9 lsr r1,r1,17h ; 08068222 0088 lsl r0,r1,2h ; 08068224 1840 add r0,r0,r1 ; 08068226 0041 lsl r1,r0,1h ;r1 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1) [card_ATK] 08068228 6E68 ldr r0,[r5,64h] ;r0 = [r5 + 0x64] 0806822A 4288 cmp r0,r1 ; 0806822C DA21 bge 8068272h ;if ([r5 + 0x64] ≥ card_ATK), branch to 08068272 0806822E 1C30 mov r0,r6 ; 08068230 4038 and r0,r7 ; 08068232 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 08068234 4905 ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 08068236 1840 add r0,r0,r1 ; 08068238 6800 ldr r0,[r0] ;r0 = card_stats 0806823A 4018 and r0,r3 ; 0806823C 0D00 lsr r0,r0,14h ;r0 = card_type 0806823E 2815 cmp r0,15h ; 08068240 DB0B blt 806825Ah ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806825A 08068242 2817 cmp r0,17h ; 08068244 DD04 ble 8068250h ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068250 08068246 2818 cmp r0,18h ; 08068248 D004 beq 8068254h ;if (card_type == DIVINE_BEAST), branch to 08068254 0806824A E006 b 806825Ah ;else branch to 0806825A 0806824C 2B84 cmp r3,84h ; 0806824E 0883 lsr r3,r0,2h ; 08068250 2000 mov r0,0h ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r0 = 0 08068252 E00D b 8068270h ;branch to 08068270 08068254 20FA mov r0,0FAh ; 08068256 0100 lsl r0,r0,4h ;card_ATK = 4000 08068258 E00A b 8068270h ;branch to 08068270 0806825A 1C30 mov r0,r6 ; 0806825C 4038 and r0,r7 ; 0806825E 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 08068260 4A0B ldr r2,=8832B84h ;r1 = pointer_to_card_stats_array 08068262 1880 add r0,r0,r2 ; 08068264 6801 ldr r1,[r0] ;r0 = card_stats 08068266 0389 lsl r1,r1,0Eh ; 08068268 0DC9 lsr r1,r1,17h ; 0806826A 0088 lsl r0,r1,2h ; 0806826C 1840 add r0,r0,r1 ; 0806826E 0040 lsl r0,r0,1h ;r0 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1) [card_ATK] 08068270 6668 str r0,[r5,64h] ;store card_ATK into [r5 + 0x64] 08068272 1C30 mov r0,r6 ; 08068274 4038 and r0,r7 ; 08068276 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 08068278 4C05 ldr r4,=8832B84h ;r4 = pointer_to_card_stats_array 0806827A 1900 add r0,r0,r4 ; 0806827C 6800 ldr r0,[r0] ;r0 = card_stats 0806827E 4018 and r0,r3 ; 08068280 0D00 lsr r0,r0,14h ; 08068282 2815 cmp r0,15h ; 08068284 DB0B blt 806829Eh ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806829E 08068286 2817 cmp r0,17h ; 08068288 DD04 ble 8068294h ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068294 0806828A 2818 cmp r0,18h ; 0806828C D004 beq 8068298h ;if (card_type == DIVINE_BEAST), branch to 08068298 0806828E E006 b 806829Eh ;else branch to 0806829E 08068290 2B84 cmp r3,84h ; 08068292 0883 lsr r3,r0,2h ; 08068294 2100 mov r1,0h ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0 08068296 E00E b 80682B6h ;branch to 080682B6 08068298 21FA mov r1,0FAh ;...if (card_type == DIVINE_BEAST) 0806829A 0109 lsl r1,r1,4h ;card_DEF = 4000 0806829C E00B b 80682B6h ;branch to 080682B6 0806829E 1C30 mov r0,r6 ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card] 080682A0 4038 and r0,r7 ; 080682A2 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 080682A4 490D ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 080682A6 1840 add r0,r0,r1 ; 080682A8 6801 ldr r1,[r0] ;r1 = card_stats 080682AA 4A0D ldr r2,=1FFh ; 080682AC 1C10 mov r0,r2 ; 080682AE 4001 and r1,r0 ; 080682B0 0088 lsl r0,r1,2h ; 080682B2 1840 add r0,r0,r1 ; 080682B4 0041 lsl r1,r0,1h ;r1 = (card_stats & 511 × 10) [card_DEF] 080682B6 6EA8 ldr r0,[r5,68h] ; 080682B8 4288 cmp r0,r1 ; 080682BA DA2E bge 806831Ah ;if ([r5 + 0x68] > card_DEF), branch to 0806831A 080682BC 1C30 mov r0,r6 ; 080682BE 4038 and r0,r7 ; 080682C0 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 080682C2 4C06 ldr r4,=8832B84h ;r4 = pointer_to_card_stats_array 080682C4 1900 add r0,r0,r4 ; 080682C6 6800 ldr r0,[r0] ;r0 = card_stats 080682C8 4018 and r0,r3 ; 080682CA 0D00 lsr r0,r0,14h ; 080682CC 2815 cmp r0,15h ; 080682CE DB0E blt 80682EEh ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 080682EE 080682D0 2817 cmp r0,17h ; 080682D2 DD07 ble 80682E4h ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 080682E4 080682D4 2818 cmp r0,18h ; 080682D6 D007 beq 80682E8h ;if (card_type == DIVINE_BEAST), branch to 080682E8 080682D8 E009 b 80682EEh ;else branch to 080682EE 080682DA 0000 lsl r0,r0,0h ;- 080682DC 2B84 cmp r3,84h ;- 080682DE 0883 lsr r3,r0,2h ;- 080682E0 01FF lsl r7,r7,7h ;- 080682E2 0000 lsl r0,r0,0h ;- 080682E4 2000 mov r0,0h ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0 080682E6 E00E b 8068306h ;branch to 08068306 080682E8 20FA mov r0,0FAh ;...if (card_type == DIVINE_BEAST) 080682EA 0100 lsl r0,r0,4h ;card_DEF = 4000 080682EC E00B b 8068306h ;branch to 08068306 080682EE 1C30 mov r0,r6 ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card] 080682F0 4038 and r0,r7 ; 080682F2 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 080682F4 4905 ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 080682F6 1840 add r0,r0,r1 ; 080682F8 6801 ldr r1,[r0] ;r1 = card_stats 080682FA 4A05 ldr r2,=1FFh ; 080682FC 1C10 mov r0,r2 ; 080682FE 4001 and r1,r0 ; 08068300 0088 lsl r0,r1,2h ; 08068302 1840 add r0,r0,r1 ; 08068304 0040 lsl r0,r0,1h ;r1 = (card_stats & 511 × 10) [card_DEF] 08068306 66A8 str r0,[r5,68h] ;store card_DEF into [r5 + 0x68] 08068308 E007 b 806831Ah ;branch to 0806831A 0806830A 0000 lsl r0,r0,0h ;- 0806830C 2B84 cmp r3,84h ;- 0806830E 0883 lsr r3,r0,2h ;- 08068310 01FF lsl r7,r7,7h ;- 08068312 0000 lsl r0,r0,0h ;- 08068314 6DA8 ldr r0,[r5,58h] ; 08068316 3001 add r0,1h ; 08068318 65A8 str r0,[r5,58h] ;increment [r5 + 0x58] 0806831A 1C30 mov r0,r6 ; 0806831C 4038 and r0,r7 ; 0806831E 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 08068320 4C05 ldr r4,=8832B84h ;r4 = pointer_to_card_stats_array 08068322 1900 add r0,r0,r4 ; 08068324 6800 ldr r0,[r0] ;r0 = card_stats 08068326 4018 and r0,r3 ; 08068328 0D00 lsr r0,r0,14h ; 0806832A 2815 cmp r0,15h ; 0806832C DB0B blt 8068346h ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 08068346 0806832E 2817 cmp r0,17h ; 08068330 DD04 ble 806833Ch ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 0806833C 08068332 2818 cmp r0,18h ; 08068334 D004 beq 8068340h ;if (card_type == DIVINE_BEAST), branch to 08068340 08068336 E006 b 8068346h ;else branch to 08068346 08068338 2B84 cmp r3,84h ; 0806833A 0883 lsr r3,r0,2h ; 0806833C 2100 mov r1,0h ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0 0806833E E00D b 806835Ch ;branch to 0806835C 08068340 21FA mov r1,0FAh ;...if (card_type == DIVINE_BEAST) 08068342 0109 lsl r1,r1,4h ;card_DEF = 4000 08068344 E00A b 806835Ch ;branch to 0806835C 08068346 1C30 mov r0,r6 ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card] 08068348 4038 and r0,r7 ; 0806834A 0080 lsl r0,r0,2h ;r0 = (card_id & 0x7FF) << 2 0806834C 490C ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 0806834E 1840 add r0,r0,r1 ; 08068350 6801 ldr r1,[r0] ;r1 = card_stats 08068352 0389 lsl r1,r1,0Eh ; 08068354 0DC9 lsr r1,r1,17h ; 08068356 0088 lsl r0,r1,2h ; 08068358 1840 add r0,r0,r1 ; 0806835A 0041 lsl r1,r0,1h ; 0806835C 6EE8 ldr r0,[r5,6Ch] ; 0806835E 4288 cmp r0,r1 ; 08068360 DA21 bge 80683A6h ; 08068362 1C30 mov r0,r6 ; 08068364 4038 and r0,r7 ; 08068366 0080 lsl r0,r0,2h ; 08068368 4A05 ldr r2,=8832B84h ;r2 = pointer_to_card_stats_array 0806836A 1880 add r0,r0,r2 ; 0806836C 6800 ldr r0,[r0] ; 0806836E 4018 and r0,r3 ; 08068370 0D00 lsr r0,r0,14h ; 08068372 2815 cmp r0,15h ; 08068374 DB0B blt 806838Eh ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806838E 08068376 2817 cmp r0,17h ; 08068378 DD04 ble 8068384h ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068384 0806837A 2818 cmp r0,18h ; 0806837C D004 beq 8068388h ;if (card_type == DIVINE_BEAST), branch to 08068388 0806837E E006 b 806838Eh ;else branch to 0806838E 08068380 2B84 cmp r3,84h ; 08068382 0883 lsr r3,r0,2h ; 08068384 2000 mov r0,0h ; 08068386 E00D b 80683A4h ; 08068388 20FA mov r0,0FAh ; 0806838A 0100 lsl r0,r0,4h ; 0806838C E00A b 80683A4h ; 0806838E 1C30 mov r0,r6 ; 08068390 4038 and r0,r7 ; 08068392 0080 lsl r0,r0,2h ; 08068394 4C0B ldr r4,=8832B84h ;r4 = pointer_to_card_stats_array 08068396 1900 add r0,r0,r4 ; 08068398 6801 ldr r1,[r0] ; 0806839A 0389 lsl r1,r1,0Eh ; 0806839C 0DC9 lsr r1,r1,17h ; 0806839E 0088 lsl r0,r1,2h ; 080683A0 1840 add r0,r0,r1 ; 080683A2 0040 lsl r0,r0,1h ; 080683A4 66E8 str r0,[r5,6Ch] ; 080683A6 1C30 mov r0,r6 ; 080683A8 4038 and r0,r7 ; 080683AA 0080 lsl r0,r0,2h ; 080683AC 4905 ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 080683AE 1840 add r0,r0,r1 ; 080683B0 6800 ldr r0,[r0] ; 080683B2 4018 and r0,r3 ; 080683B4 0D00 lsr r0,r0,14h ; 080683B6 2815 cmp r0,15h ; 080683B8 DB0B blt 80683D2h ; 080683BA 2817 cmp r0,17h ; 080683BC DD04 ble 80683C8h ; 080683BE 2818 cmp r0,18h ; 080683C0 D004 beq 80683CCh ; 080683C2 E006 b 80683D2h ; 080683C4 2B84 cmp r3,84h ; 080683C6 0883 lsr r3,r0,2h ; 080683C8 2100 mov r1,0h ; 080683CA E00E b 80683EAh ; 080683CC 21FA mov r1,0FAh ; 080683CE 0109 lsl r1,r1,4h ; 080683D0 E00B b 80683EAh ; 080683D2 1C30 mov r0,r6 ; 080683D4 4038 and r0,r7 ; 080683D6 0080 lsl r0,r0,2h ; 080683D8 4A0D ldr r2,=8832B84h ;r2 = pointer_to_card_stats_array 080683DA 1880 add r0,r0,r2 ; 080683DC 6801 ldr r1,[r0] ; 080683DE 4C0D ldr r4,=1FFh ; 080683E0 1C20 mov r0,r4 ; 080683E2 4001 and r1,r0 ; 080683E4 0088 lsl r0,r1,2h ; 080683E6 1840 add r0,r0,r1 ; 080683E8 0041 lsl r1,r0,1h ;r1 = card_DEF 080683EA 6F28 ldr r0,[r5,70h] ; 080683EC 4288 cmp r0,r1 ; 080683EE DA25 bge 806843Ch ;if ([r5,70h] > card_DEF), branch to 006843C 080683F0 1C30 mov r0,r6 ; 080683F2 4038 and r0,r7 ; 080683F4 0080 lsl r0,r0,2h ; 080683F6 4906 ldr r1,=8832B84h ;r1 = pointer_to_card_stats_array 080683F8 1840 add r0,r0,r1 ; 080683FA 6800 ldr r0,[r0] ; 080683FC 4018 and r0,r3 ; 080683FE 0D00 lsr r0,r0,14h ; 08068400 2815 cmp r0,15h ; 08068402 DB0E blt 8068422h ; 08068404 2817 cmp r0,17h ; 08068406 DD07 ble 8068418h ; 08068408 2818 cmp r0,18h ; 0806840A D007 beq 806841Ch ; 0806840C E009 b 8068422h ; 0806840E 0000 lsl r0,r0,0h ;- 08068410 2B84 cmp r3,84h ;- 08068412 0883 lsr r3,r0,2h ;- 08068414 01FF lsl r7,r7,7h ;- 08068416 0000 lsl r0,r0,0h ;- 08068418 2000 mov r0,0h ; 0806841A E00E b 806843Ah ; 0806841C 20FA mov r0,0FAh ; 0806841E 0100 lsl r0,r0,4h ; 08068420 E00B b 806843Ah ; 08068422 1C30 mov r0,r6 ; 08068424 4038 and r0,r7 ; 08068426 0080 lsl r0,r0,2h ; 08068428 4A21 ldr r2,=8832B84h ;r2 = pointer_to_card_stats_array 0806842A 1880 add r0,r0,r2 ; 0806842C 6801 ldr r1,[r0] ; 0806842E 4C21 ldr r4,=1FFh ; 08068430 1C20 mov r0,r4 ; 08068432 4001 and r1,r0 ; 08068434 0088 lsl r0,r1,2h ; 08068436 1840 add r0,r0,r1 ; 08068438 0040 lsl r0,r0,1h ;r0 = card_DEF 0806843A 6728 str r0,[r5,70h] ;store card_DEF into [r5 + 0x70] 0806843C 1C30 mov r0,r6 ; 0806843E 4038 and r0,r7 ; 08068440 0040 lsl r0,r0,1h ; 08068442 491D ldr r1,=8833C80h ;r1 = pointer_to_internal_cards_ids_array 08068444 1844 add r4,r0,r1 ; 08068446 8820 ldrh r0,[r4] ;r0 = internal_card_id 08068448 2101 mov r1,1h ;r1 = 1 0806844A 9300 str r3,[sp] ; 0806844C F7A8FB38 bl 8010AC0h ;call 08010AC0 08068450 9B00 ldr r3,[sp] ; 08068452 2800 cmp r0,0h ; 08068454 D106 bne 8068464h ; 08068456 8820 ldrh r0,[r4] ; 08068458 2100 mov r1,0h ; 0806845A F7A8FB31 bl 8010AC0h ;call 08010AC0 0806845E 9B00 ldr r3,[sp] ; 08068460 2800 cmp r0,0h ; 08068462 D002 beq 806846Ah ; 08068464 6D28 ldr r0,[r5,50h] ; 08068466 3001 add r0,1h ; 08068468 6528 str r0,[r5,50h] ;increment [r5 + 0x50] 0806846A 403E and r6,r7 ; 0806846C 0070 lsl r0,r6,1h ; 0806846E 4A12 ldr r2,=8833C80h ;r2 = pointer_to_internal_cards_ids_array 08068470 1880 add r0,r0,r2 ; 08068472 8801 ldrh r1,[r0] ;r1 = internal_card_id 08068474 4811 ldr r0,=229h ;r0 = 553 [Lava Battleguard] 08068476 4281 cmp r1,r0 ; 08068478 D100 bne 806847Ch ;if (internal_card_id ≠ Lava Battleguard), branch to 0806847C 0806847A E0E0 b 806863Eh ;else branch to 0806863E 0806847C 4281 cmp r1,r0 ; 0806847E DC6F bgt 8068560h ;if (internal_card_id > 553), branch to 08068560 08068480 389C sub r0,9Ch ;r0 = 397 [Ooguchi] 08068482 4281 cmp r1,r0 ; 08068484 DC38 bgt 80684F8h ; 08068486 3801 sub r0,1h ;r0 = 396 [Leghul] 08068488 4281 cmp r1,r0 ; 0806848A DB00 blt 806848Eh ; 0806848C E0E2 b 8068654h ; 0806848E 2953 cmp r1,53h ;83 [Reaper of the Cards] 08068490 D100 bne 8068494h ; 08068492 E0E7 b 8068664h ; 08068494 2953 cmp r1,53h ; 08068496 DC17 bgt 80684C8h ; 08068498 2914 cmp r1,14h ;20 [Exodia the Forbidden One] 0806849A DC11 bgt 80684C0h ; 0806849C 2910 cmp r1,10h ;16 [Right Leg of the Forbidden One] 0806849E DB00 blt 80684A2h ; 080684A0 E0F0 b 8068684h ; 080684A2 290B cmp r1,0Bh ;11 [Swamp Battleguard] 080684A4 D100 bne 80684A8h ; 080684A6 E0CA b 806863Eh ; 080684A8 290F cmp r1,0Fh ;15 [Time Wizard] 080684AA D100 bne 80684AEh ; 080684AC E0D6 b 806865Ch ; 080684AE E0EC b 806868Ah ;branch to 0806868A 080684B0 2B84 cmp r3,84h ;- 080684B2 0883 lsr r3,r0,2h ;- 080684B4 01FF lsl r7,r7,7h ;- 080684B6 0000 lsl r0,r0,0h ;- 080684B8 3C80 sub r4,80h ; 080684BA 0883 lsr r3,r0,2h ; 080684BC 0229 lsl r1,r5,8h ; 080684BE 0000 lsl r0,r0,0h ; 080684C0 292F cmp r1,2Fh ;47 [Sangan] 080684C2 D100 bne 80684C6h ; 080684C4 E0DA b 806867Ch ; 080684C6 E0E0 b 806868Ah ;branch to 0806868A 080684C8 4806 ldr r0,=16Fh ;r0 = 367 [Shadow Ghoul] 080684CA 4281 cmp r1,r0 ; 080684CC D100 bne 80684D0h ; 080684CE E0B6 b 806863Eh ; 080684D0 4281 cmp r1,r0 ; 080684D2 DC09 bgt 80684E8h ; 080684D4 29DF cmp r1,0DFh ;223 [Trap Master] 080684D6 D100 bne 80684DAh ; 080684D8 E0C4 b 8068664h ; 080684DA 29EA cmp r1,0EAh ;234 [Wodan the Resident of the Forest] 080684DC D100 bne 80684E0h ; 080684DE E0AE b 806863Eh ; 080684E0 E0D3 b 806868Ah ;branch to 0806868A 080684E2 0000 lsl r0,r0,0h ; 080684E4 016F lsl r7,r5,5h ; 080684E6 0000 lsl r0,r0,0h ; 080684E8 4802 ldr r0,=181h ;r0 = 385 [Harpie's Pet Dragon] 080684EA 4281 cmp r1,r0 ; 080684EC D100 bne 80684F0h ; 080684EE E0A6 b 806863Eh ; 080684F0 3001 add r0,1h ; 080684F2 E07C b 80685EEh ; 080684F4 0181 lsl r1,r0,6h ; 080684F6 0000 lsl r0,r0,0h ; 080684F8 20FA mov r0,0FAh ; 080684FA 0040 lsl r0,r0,1h ;r0 = 500 [Man-Eater Bug] 080684FC 4281 cmp r1,r0 ; 080684FE D100 bne 8068502h ; 08068500 E0AC b 806865Ch ; 08068502 4281 cmp r1,r0 ; 08068504 DC15 bgt 8068532h ; 08068506 380D sub r0,0Dh ;r0 = 487 [Rainbow Flower] 08068508 4281 cmp r1,r0 ; 0806850A D100 bne 806850Eh ; 0806850C E0A2 b 8068654h ; 0806850E 4281 cmp r1,r0 ; 08068510 DC05 bgt 806851Eh ; 08068512 3851 sub r0,51h ;r0 = 406 [Machine King] 08068514 4281 cmp r1,r0 ; 08068516 D100 bne 806851Ah ; 08068518 E091 b 806863Eh ; 0806851A 300F add r0,0Fh ;r0 = 421 [Jinzo #7] 0806851C E067 b 80685EEh ; 0806851E 20F6 mov r0,0F6h ; 08068520 0040 lsl r0,r0,1h ;r0 = 492 [Maha Vailo] 08068522 4281 cmp r1,r0 ; 08068524 DD00 ble 8068528h ; 08068526 E0B0 b 806868Ah ;branch to 0806868A 08068528 3801 sub r0,1h ; 0806852A 4281 cmp r1,r0 ; 0806852C DA00 bge 8068530h ; 0806852E E0AC b 806868Ah ;branch to 0806868A 08068530 E085 b 806863Eh ; 08068532 4806 ldr r0,=20Eh ;r0 = 526 [Milus Radiant] 08068534 4281 cmp r1,r0 ; 08068536 D100 bne 806853Ah ; 08068538 E081 b 806863Eh ; 0806853A 4281 cmp r1,r0 ; 0806853C DC08 bgt 8068550h ; 0806853E 380B sub r0,0Bh ;r0 = 515 [Muka Muka] 08068540 4281 cmp r1,r0 ; 08068542 D100 bne 8068546h ; 08068544 E07B b 806863Eh ; 08068546 3008 add r0,8h ;r0 = 523 [Star Boy] 08068548 E03D b 80685C6h ; 0806854A 0000 lsl r0,r0,0h ;- 0806854C 020E lsl r6,r1,8h ;- 0806854E 0000 lsl r0,r0,0h ;- 08068550 4802 ldr r0,=21Bh ;r0 = 539 [Skelengel] 08068552 4281 cmp r1,r0 ; 08068554 D100 bne 8068558h ; 08068556 E08D b 8068674h ; 08068558 3001 add r0,1h ;r0 = 540 [Hane-Hane] 0806855A E02E b 80685BAh ; 0806855C 021B lsl r3,r3,8h ; 0806855E 0000 lsl r0,r0,0h ; 08068560 480A ldr r0,=2FEh ;r0 = 766 [Blue-Eyes Toon Dragon] 08068562 4281 cmp r1,r0 ; 08068564 D100 bne 8068568h ; 08068566 E075 b 8068654h ; 08068568 4281 cmp r1,r0 ; 0806856A DC31 bgt 80685D0h ; 0806856C 388B sub r0,8Bh ; 0806856E 4281 cmp r1,r0 ; 08068570 D065 beq 806863Eh ; 08068572 4281 cmp r1,r0 ; 08068574 DC12 bgt 806859Ch ; 08068576 381A sub r0,1Ah ; 08068578 4281 cmp r1,r0 ; 0806857A D06F beq 806865Ch ; 0806857C 4281 cmp r1,r0 ; 0806857E DC07 bgt 8068590h ; 08068580 381C sub r0,1Ch ; 08068582 4281 cmp r1,r0 ; 08068584 D100 bne 8068588h ; 08068586 E079 b 806867Ch ; 08068588 3018 add r0,18h ; 0806858A E01C b 80685C6h ; 0806858C 02FE lsl r6,r7,0Bh ; 0806858E 0000 lsl r0,r0,0h ; 08068590 2098 mov r0,98h ; 08068592 0080 lsl r0,r0,2h ; 08068594 4281 cmp r1,r0 ; 08068596 D052 beq 806863Eh ; 08068598 3007 add r0,7h ; 0806859A E014 b 80685C6h ; 0806859C 20B6 mov r0,0B6h ; 0806859E 0080 lsl r0,r0,2h ; 080685A0 4281 cmp r1,r0 ; 080685A2 DC04 bgt 80685AEh ; 080685A4 3802 sub r0,2h ; 080685A6 4281 cmp r1,r0 ; 080685A8 DA54 bge 8068654h ; 080685AA 385C sub r0,5Ch ; 080685AC E01F b 80685EEh ; 080685AE 4804 ldr r0,=2F7h ;r0 = 759 [Dark Magician Girl] 080685B0 4281 cmp r1,r0 ; 080685B2 D044 beq 806863Eh ; 080685B4 4281 cmp r1,r0 ; 080685B6 DC05 bgt 80685C4h ; 080685B8 3811 sub r0,11h ; 080685BA 4281 cmp r1,r0 ; 080685BC D04E beq 806865Ch ; 080685BE E064 b 806868Ah ;branch to 0806868A 080685C0 02F7 lsl r7,r6,0Bh ; 080685C2 0000 lsl r0,r0,0h ; 080685C4 4801 ldr r0,=2F9h ;r0 = 761 [Insect Queen] 080685C6 4281 cmp r1,r0 ; 080685C8 D039 beq 806863Eh ; 080685CA E05E b 806868Ah ;branch to 0806868A 080685CC 02F9 lsl r1,r7,0Bh ; 080685CE 0000 lsl r0,r0,0h ; 080685D0 4808 ldr r0,=45Ch ;r0 = 1116 [Spear Cretin] 080685D2 4281 cmp r1,r0 ; 080685D4 D04A beq 806866Ch ; 080685D6 4281 cmp r1,r0 ; 080685D8 DC18 bgt 806860Ch ; 080685DA 3808 sub r0,8h ; 080685DC 4281 cmp r1,r0 ; 080685DE D04D beq 806867Ch ; 080685E0 4281 cmp r1,r0 ; 080685E2 DC09 bgt 80685F8h ; 080685E4 20CA mov r0,0CAh ; 080685E6 0080 lsl r0,r0,2h ; 080685E8 4281 cmp r1,r0 ; 080685EA D028 beq 806863Eh ; 080685EC 3004 add r0,4h ; 080685EE 4281 cmp r1,r0 ; 080685F0 D030 beq 8068654h ; 080685F2 E04A b 806868Ah ;branch to 0806868A 080685F4 045C lsl r4,r3,11h ; 080685F6 0000 lsl r0,r0,0h ; 080685F8 4803 ldr r0,=456h ;r0 = 1110 [UFO Turtle] 080685FA 4281 cmp r1,r0 ; 080685FC D03E beq 806867Ch ; 080685FE 3005 add r0,5h ; 08068600 4281 cmp r1,r0 ; 08068602 D023 beq 806864Ch ; 08068604 E041 b 806868Ah ;branch to 0806868A 08068606 0000 lsl r0,r0,0h ; 08068608 0456 lsl r6,r2,11h ; 0806860A 0000 lsl r0,r0,0h ; 0806860C 208C mov r0,8Ch ; 0806860E 00C0 lsl r0,r0,3h ; 08068610 4281 cmp r1,r0 ; 08068612 DC04 bgt 806861Eh ; 08068614 3801 sub r0,1h ; 08068616 4281 cmp r1,r0 ; 08068618 DA30 bge 806867Ch ; 0806861A 3802 sub r0,2h ; 0806861C E005 b 806862Ah ; 0806861E 4804 ldr r0,=5ECh ;r0 = 1516 [Spirit of Flames] 08068620 4281 cmp r1,r0 ; 08068622 D00C beq 806863Eh ; 08068624 4281 cmp r1,r0 ; 08068626 DC07 bgt 8068638h ; 08068628 4802 ldr r0,=463h ;r0 = 1123 [Mystic Tomato] 0806862A 4281 cmp r1,r0 ; 0806862C D026 beq 806867Ch ; 0806862E E02C b 806868Ah ;branch to 0806868A 08068630 05EC lsl r4,r5,17h ; 08068632 0000 lsl r0,r0,0h ; 08068634 0463 lsl r3,r4,11h ; 08068636 0000 lsl r0,r0,0h ; 08068638 4803 ldr r0,=5EEh ;r0 = 1518 [The Rock Spirit] 0806863A 4281 cmp r1,r0 ; 0806863C D125 bne 806868Ah ;if (internal_card_id ≠ The Rock Spirit), branch to 0806868A 0806863E 6B28 ldr r0,[r5,30h] ; 08068640 3001 add r0,1h ; 08068642 6328 str r0,[r5,30h] ;increment [r5 + 0x30] 08068644 E021 b 806868Ah ;branch to 0806868A 08068646 0000 lsl r0,r0,0h ;- 08068648 05EE lsl r6,r5,17h ;- 0806864A 0000 lsl r0,r0,0h ;- 0806864C 6B68 ldr r0,[r5,34h] ; 0806864E 3001 add r0,1h ; 08068650 6368 str r0,[r5,34h] ;increment [r5 + 0x34] 08068652 E01A b 806868Ah ;branch to 0806868A 08068654 6BA8 ldr r0,[r5,38h] ; 08068656 3001 add r0,1h ; 08068658 63A8 str r0,[r5,38h] ;increment [r5 + 0x38] 0806865A E016 b 806868Ah ;branch to 0806868A 0806865C 6BE8 ldr r0,[r5,3Ch] ; 0806865E 3001 add r0,1h ; 08068660 63E8 str r0,[r5,3Ch] ;increment [r5 + 0x3C] 08068662 E012 b 806868Ah ;branch to 0806868A 08068664 6C28 ldr r0,[r5,40h] ; 08068666 3001 add r0,1h ; 08068668 6428 str r0,[r5,40h] ;increment [r5 + 0x40] 0806866A E00E b 806868Ah ;branch to 0806868A 0806866C 6C68 ldr r0,[r5,44h] ; 0806866E 3001 add r0,1h ; 08068670 6468 str r0,[r5,44h] ;increment [r5 + 0x44] 08068672 E00A b 806868Ah ;branch to 0806868A 08068674 6CA8 ldr r0,[r5,48h] ; 08068676 3001 add r0,1h ; 08068678 64A8 str r0,[r5,48h] ;increment [r5 + 0x48] 0806867A E006 b 806868Ah ;branch to 0806868A 0806867C 6CE8 ldr r0,[r5,4Ch] ; 0806867E 3001 add r0,1h ; 08068680 64E8 str r0,[r5,4Ch] ;increment [r5 + 0x4C] 08068682 E002 b 806868Ah ;branch to 0806868A 08068684 6DE8 ldr r0,[r5,5Ch] ; 08068686 3001 add r0,1h ; 08068688 65E8 str r0,[r5,5Ch] ;increment [r5 + 0x5C] 0806868A 2401 mov r4,1h ; 0806868C 44A0 add r8,r4 ;r8++ /*(the most inefficient increment in the world)*/ 0806868E 4913 ldr r1,=2018FE4h ; 08068690 2001 mov r0,1h ; 08068692 464A mov r2,r9 ; 08068694 4010 and r0,r2 ; 08068696 4A12 ldr r2,=0D64h ; 08068698 4350 mul r0,r2 ; 0806869A 1840 add r0,r0,r1 ; 0806869C 78C0 ldrb r0,[r0,3h] ; 0806869E 4580 cmp r8,r0 ; 080686A0 DA01 bge 80686A6h ; 080686A2 F7FFFABE bl 8067C22h ; 080686A6 4A0D ldr r2,=2018FE4h ; 080686A8 2001 mov r0,1h ; 080686AA 464C mov r4,r9 ; 080686AC 4020 and r0,r4 ; 080686AE 490C ldr r1,=0D64h ; 080686B0 4348 mul r0,r1 ; 080686B2 1880 add r0,r0,r2 ; 080686B4 7940 ldrb r0,[r0,5h] ; 080686B6 60E8 str r0,[r5,0Ch] ; 080686B8 6828 ldr r0,[r5] ; 080686BA 6869 ldr r1,[r5,4h] ; 080686BC 1840 add r0,r0,r1 ; 080686BE 68A9 ldr r1,[r5,8h] ; 080686C0 1840 add r0,r0,r1 ; 080686C2 6929 ldr r1,[r5,10h] ; 080686C4 1840 add r0,r0,r1 ; 080686C6 6969 ldr r1,[r5,14h] ; 080686C8 1840 add r0,r0,r1 ; 080686CA 61A8 str r0,[r5,18h] ; 080686CC B001 add sp,4h ; 080686CE BC18 pop r3,r4 ; 080686D0 4698 mov r8,r3 ; 080686D2 46A1 mov r9,r4 ; 080686D4 BCF0 pop r4-r7 ; 080686D6 BC01 pop r0 ; 080686D8 4700 bx r0 ;
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 ;
0x6B25E
0806B25E 0000 lsl r0,r0,0h ; 0806B260 B530 push r4,r5,r14 ; 0806B262 B09D add sp,-74h ; 0806B264 2000 mov r0,0h ; 0806B266 4669 mov r1,r13 ; 0806B268 F7FCFCBA bl 8067BE0h ;Check cards in Player's Deck 0806B26C 4CBF ldr r4,=201A50Ch ; 0806B26E 25A0 mov r5,0A0h ; 0806B270 006D lsl r5,r5,1h ; 0806B272 1C20 mov r0,r4 ; 0806B274 1C29 mov r1,r5 ; 0806B276 F01DFCEF bl 8088C58h ; 0806B27A 21A0 mov r1,0A0h ; 0806B27C 0089 lsl r1,r1,2h ; 0806B27E 1860 add r0,r4,r1 ; 0806B280 1C29 mov r1,r5 ; 0806B282 F01DFCE9 bl 8088C58h ; 0806B286 48BA ldr r0,=0FFFFF83Fh ; 0806B288 1825 add r5,r4,r0 ; 0806B28A 2000 mov r0,0h ; 0806B28C 7028 strb r0,[r5] ; 0806B28E 49B9 ldr r1,=0FFFFF841h ; 0806B290 1864 add r4,r4,r1 ; 0806B292 7020 strb r0,[r4] ; 0806B294 48B8 ldr r0,=3000040h ; 0806B296 49B9 ldr r1,=4870h ; 0806B298 1840 add r0,r0,r1 ; 0806B29A 7800 ldrb r0,[r0] ; 0806B29C 0680 lsl r0,r0,1Ah ; 0806B29E 0EC0 lsr r0,r0,1Bh ; 0806B2A0 F7FDFEFC bl 806909Ch ; 0806B2A4 782D ldrb r5,[r5] ; 0806B2A6 2D27 cmp r5,27h ; 0806B2A8 D900 bls 806B2ACh ; 0806B2AA E0C2 b 806B432h ;
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
Internal Data for Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel
| |
---|---|