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! Ultimate Masters: World Championship Tournament 2006/ROM map
Jump to navigation
Jump to search
The following article is a ROM map for Yu-Gi-Oh! Ultimate Masters: World Championship Tournament 2006.
Banlist Password
Enter character
080143F0 B570 push r4-r6,r14 ; 080143F2 1C04 mov r4,r0 ; 080143F4 1C0B mov r3,r1 ; 080143F6 1C16 mov r6,r2 ; 080143F8 490D ldr r1,=2000000h ; 080143FA 480E ldr r0,=6C2Ch ; 080143FC 1809 add r1,r1,r0 ; 080143FE 2007 mov r0,7h ; 08014400 7809 ldrb r1,[r1] ; 08014402 4008 and r0,r1 ; 08014404 2800 cmp r0,0h ; 08014406 D003 beq 8014410h ; 08014408 480B ldr r0,=202348Ch ; 0801440A 7800 ldrb r0,[r0] ; 0801440C 2800 cmp r0,0h ; 0801440E D023 beq 8014458h ; 08014410 7821 ldrb r1,[r4] ; 08014412 2900 cmp r1,0h ; 08014414 D025 beq 8014462h ; 08014416 2A00 cmp r2,0h ; 08014418 D023 beq 8014462h ; 0801441A 2580 mov r5,80h ; 0801441C 1C28 mov r0,r5 ; 0801441E 4008 and r0,r1 ; 08014420 2800 cmp r0,0h ; 08014422 D00B beq 801443Ch ; 08014424 7019 strb r1,[r3] ;Store charset 08014426 3401 add r4,1h ; 08014428 3301 add r3,1h ; 0801442A 7820 ldrb r0,[r4] ;Load character_id in r0 0801442C 7018 strb r0,[r3] ;Store character_id 0801442E E006 b 801443Eh ;
Retrieve CPU opponent's name
080242AE 0000 lsl r0,r0,0h ; 080242B0 943C str r4,[sp,0F0h] ; 080242B2 09DC lsr r4,r3,7h ; 080242B4 6C2C ldr r4,[r5,40h] ; 080242B6 0000 lsl r0,r0,0h ; 080242B8 6E5C ldr r4,[r3,64h] ; 080242BA 0000 lsl r0,r0,0h ; 080242BC 3360 add r3,60h ; 080242BE 0202 lsl r2,r0,8h ; 080242C0 6E48 ldr r0,[r1,64h] ; 080242C2 0000 lsl r0,r0,0h ; 080242C4 6E57 ldr r7,[r2,64h] ; 080242C6 0000 lsl r0,r0,0h ; 080242C8 485B ldr r0,=9E58D0Ch ; 080242CA 0DA1 lsr r1,r4,16h ; 080242CC 1809 add r1,r1,r0 ; 080242CE 8848 ldrh r0,[r1,2h] ;r0 = internal_card_id 080242D0 F0CAFC94 bl 80EEBFCh ;
Check if internal_card_id is valid, and convert it to card_id
080EE76C 0400 lsl r0,r0,10h ;start of the function 080EE76E 0C02 lsr r2,r0,10h ; 080EE770 1C11 mov r1,r2 ; 080EE772 4808 ldr r0,=0FA6h ; 080EE774 4282 cmp r2,r0 ; 080EE776 D917 bls 80EE7A8h ;if (r2 ≤ 4006), branch to 080EE7A8 080EE778 4807 ldr r0,=1BA6h ; 080EE77A 4282 cmp r2,r0 ; 080EE77C D814 bhi 80EE7A8h ;if (r2 ≤ 7078), branch to 080EE7A8 080EE77E 4807 ldr r0,=95B7CCCh ;r0 = pointer_to_cards_ids_array 080EE780 4A07 ldr r2,=0FFFFF059h ; 080EE782 1889 add r1,r1,r2 ;r1 -= 0xFA7 [4007; Blue-Eyes White Dragon] 080EE784 0049 lsl r1,r1,1h ;r1 << 1 080EE786 1809 add r1,r1,r0 ;r1 = pointer_to_cards_ids_array + ((internal_card_id - 4007) << 1) 080EE788 8809 ldrh r1,[r1] ;r1 = card_id 080EE78A 4806 ldr r0,=0FFFFh ; 080EE78C 4281 cmp r1,r0 ; 080EE78E D00B beq 80EE7A8h ;if (invalid_card_id), branch to 080EE7A8 080EE790 1C08 mov r0,r1 ;r0 = card_id 080EE792 E00A b 80EE7AAh ;branch to 080EE7AA 080EE794 0FA6 lsr r6,r4,1Eh ;- 080EE796 0000 lsl r0,r0,0h ;- 080EE798 1BA6 sub r6,r4,r6 ;- 080EE79A 0000 lsl r0,r0,0h ;- 080EE79C 7CCC ldrb r4,[r1,13h] ;- 080EE79E 095B lsr r3,r3,5h ;- 080EE7A0 F059FFFF bl 81487A2h ;- 080EE7A4 FFFF bl lr+0FFEh ;- 080EE7A6 0000 lsl r0,r0,0h ;- 080EE7A8 2000 mov r0,0h ;... if (not an internal_card_id), r0 = 0 080EE7AA 4770 bx r14 ;go back right after the function call (0xEEC07 in the case of displaying CPU opponents' names)
Checks which charset to use (Japanese or International), then branch depending on a look-up table using card_id
080EE7A8 2000 mov r0,0h ;... if (not an internal_card_id) 080EE7AA 4770 bx r14 ;go back right after the function call (0xEEC07 in the case of displaying CPU opponents' names) 080EE7AC 1C02 mov r2,r0 ;start of the function, r2 = card_id 080EE7AE 1C0B mov r3,r1 ;r3 = [0x2006C2C] & 7 080EE7B0 480B ldr r0,=80000AEh ; 080EE7B2 8800 ldrh r0,[r0] ;r0 = second_part_of_game_code 080EE7B4 0A00 lsr r0,r0,8h ; 080EE7B6 284A cmp r0,4Ah ; 080EE7B8 D100 bne 80EE7BCh ;if the game is not Japanese, branch to 080EE7BC 080EE7BA E0D5 b 80EE968h ;else branch to 080EE968 080EE7BC 2B00 cmp r3,0h ;... if the game is not Japanese 080EE7BE D000 beq 80EE7C2h ;if (r3 == 0), branch to 080EE7C2 080EE7C0 E0D2 b 80EE968h ;else branch to 080EE968 080EE7C2 4908 ldr r1,=98169B8h ;r1 = 0x98169B8 080EE7C4 2016 mov r0,16h ; 080EE7C6 4350 mul r0,r2 ; 080EE7C8 1840 add r0,r0,r1 ;r0 = 0x98169B8 + (card_id × 22) 080EE7CA 8801 ldrh r1,[r0] ;r1 = [0x98169B8 + (card_id × 22)] 080EE7CC 4806 ldr r0,=1498h ; 080EE7CE 4281 cmp r1,r0 ; 080EE7D0 D044 beq 80EE85Ch ;if ((0x98169B8 + (card_id × 22)) == 0x1498), branch to 080EE85C 080EE7D2 4281 cmp r1,r0 ; 080EE7D4 DC0A bgt 80EE7ECh ;else if ((0x98169B8 + (card_id × 22)) > 0x1498), branch to 080EE7EC 080EE7D6 3801 sub r0,1h ; 080EE7D8 4281 cmp r1,r0 ; 080EE7DA D011 beq 80EE800h ;if ((0x98169B8 + (card_id × 22))) == 0x1497), branch to 080EE800 080EE7DC E0C4 b 80EE968h ;else branch to 080EE968 080EE7DE 0000 lsl r0,r0,0h ; 080EE7E0 00AE lsl r6,r5,2h ; 080EE7E2 0800 lsr r0,r0,20h ; 080EE7E4 69B8 ldr r0,[r7,18h] ; 080EE7E6 0981 lsr r1,r0,6h ; 080EE7E8 1498 asr r0,r3,12h ; 080EE7EA 0000 lsl r0,r0,0h ; 080EE7EC 4803 ldr r0,=1499h ; 080EE7EE 4281 cmp r1,r0 ; 080EE7F0 D062 beq 80EE8B8h ;if ((0x98169B8 + (card_id × 22)) == 0x1499), branch to 080EE8B8 080EE7F2 3001 add r0,1h ; 080EE7F4 4281 cmp r1,r0 ; 080EE7F6 D100 bne 80EE7FAh ;else if ((0x98169B8 + (card_id × 22)) ≠ 0x149A), branch to 080EE7FA (branch to 080EE968) 080EE7F8 E08A b 80EE910h ;else branch to 080EE910 080EE7FA E0B5 b 80EE968h ;branch to 080EE968
Retrieve card_id from an internal_card_id, retrieve EWRAM 02006C2Cn and call 080EE7AC
080EEBF2 0000 lsl r0,r0,0h ; 080EEBF4 A508 add r5,=80EEC18h ; 080EEBF6 0980 lsr r0,r0,6h ; 080EEBF8 FF0C bl lr+0E18h ; 080EEBFA 095F lsr r7,r3,5h ; 080EEBFC B500 push r14 ; 080EEBFE 0400 lsl r0,r0,10h ; 080EEC00 0C00 lsr r0,r0,10h ; 080EEC02 F7FFFDB3 bl 80EE76Ch ;call [#Check_if_internal_card_id_is_valid.2C_and_convert_it_to_card_id|Check if internal_card_id is valid, and convert it to card_id] 080EEC06 0400 lsl r0,r0,10h ; 080EEC08 0C00 lsr r0,r0,10h ;r0 = card_id 080EEC0A 4905 ldr r1,=2000000h ; 080EEC0C 4A05 ldr r2,=6C2Ch ; 080EEC0E 1889 add r1,r1,r2 ;r1 = 0x2006C2C 080EEC10 7809 ldrb r1,[r1] ;r1 = [0x2006C2C] 080EEC12 0749 lsl r1,r1,1Dh ; 080EEC14 0F49 lsr r1,r1,1Dh ;r1 &= 7 080EEC16 F7FFFDC9 bl 80EE7ACh ;call 080EE7AC 080EEC1A BC02 pop r1 ; 080EEC1C 4708 bx r1 ;branch to r1
Cards IDs array
- 0x157BCCC to 0x15B917B - Conversion table from internal_card_id to card_id
Internal Data for Yu-Gi-Oh! Ultimate Masters: World Championship Tournament 2006
| |
---|---|