diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-28 14:09:33 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-28 14:09:33 -0400 |
commit | 4f66d1b7f2630aa1b805ac8e848ebae38faaacd3 (patch) | |
tree | c487f306b352fee6cab0fabbdda34960a79f929c | |
parent | 21415be0d3bcd5edffbd83777660af319a01e51b (diff) |
through sub_811A15C (two nonmatching)
-rw-r--r-- | asm/pokedex_cry_screen.s | 464 | ||||
-rw-r--r-- | data/pokedex_cry_screen.s | 33 | ||||
-rw-r--r-- | graphics/pokedex/83FB718.png | bin | 0 -> 135 bytes | |||
-rw-r--r-- | include/main.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/pokedex_cry_screen.c | 413 |
7 files changed, 416 insertions, 500 deletions
diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s index cc9ed7dc3..67b8dc5b1 100644 --- a/asm/pokedex_cry_screen.s +++ b/asm/pokedex_cry_screen.s @@ -5,470 +5,6 @@ .text - thumb_func_start sub_8119E3C -sub_8119E3C: @ 8119E3C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - lsls r1, 24 - lsrs r2, r1, 24 - movs r0, 0 - mov r9, r0 - ldr r6, _08119E60 @ =gUnknown_03005E98 - ldrb r0, [r6] - cmp r0, 0x1 - beq _08119EE0 - cmp r0, 0x1 - bgt _08119E64 - cmp r0, 0 - beq _08119E6A - b _08119F74 - .align 2, 0 -_08119E60: .4byte gUnknown_03005E98 -_08119E64: - cmp r0, 0x2 - beq _08119F60 - b _08119F74 -_08119E6A: - ldr r4, _08119ECC @ =gSharedMem + 0x1C000 - ldrh r0, [r5] - movs r1, 0 - strh r0, [r4, 0x14] - ldrb r0, [r5, 0x5] - strb r0, [r4, 0x16] - strb r1, [r4, 0x1A] - strb r1, [r4, 0x1B] - strb r1, [r4, 0x10] - movs r0, 0x1C - strb r0, [r4, 0x12] - strb r1, [r4, 0x11] - ldrb r1, [r5, 0x4] - lsls r1, 19 - negs r1, r1 - asrs r1, 16 - adds r0, r2, 0 - movs r2, 0x1 - bl sub_811A350 - movs r0, 0 - mov r12, r6 - ldr r1, _08119ED0 @ =0x040000d4 - ldr r7, _08119ED4 @ =gUnknown_083FB718 - ldr r2, _08119ED8 @ =0xfffe4000 - adds r6, r4, r2 - ldr r5, _08119EDC @ =0x80000010 -_08119EA0: - movs r3, 0 - adds r4, r0, 0x1 - lsls r2, r0, 5 -_08119EA6: - str r7, [r1] - adds r0, r2, r3 - lsls r0, 5 - adds r0, r6 - str r0, [r1, 0x4] - str r5, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _08119EA6 - lsls r0, r4, 24 - lsrs r0, 24 - cmp r0, 0x6 - bls _08119EA0 - mov r1, r12 - b _08119F50 - .align 2, 0 -_08119ECC: .4byte gSharedMem + 0x1C000 -_08119ED0: .4byte 0x040000d4 -_08119ED4: .4byte gUnknown_083FB718 -_08119ED8: .4byte 0xfffe4000 -_08119EDC: .4byte 0x80000010 -_08119EE0: - ldrb r0, [r5, 0x2] - lsls r0, 27 - lsrs r7, r0, 16 - ldrb r1, [r5, 0x3] - lsls r1, 12 - ldrh r0, [r5] - lsls r0, 18 - lsrs r0, 23 - adds r1, r0 - lsls r1, 16 - lsrs r6, r1, 16 - movs r0, 0 - ldr r2, _08119F58 @ =gSharedMem + 0x1C000 - mov r8, r2 - movs r1, 0xC0 - lsls r1, 19 - mov r12, r1 -_08119F02: - movs r3, 0 - adds r4, r0, 0x1 - lsls r5, r0, 6 -_08119F08: - lsls r1, r3, 1 - adds r1, r5 - adds r1, r7 - add r1, r12 - adds r2, r6, 0 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - strh r2, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _08119F08 - lsls r0, r4, 24 - lsrs r0, 24 - cmp r0, 0x6 - bls _08119F02 - mov r2, r8 - ldrb r0, [r2, 0x16] - movs r4, 0 - cmp r0, 0 - beq _08119F4E - mov r5, r8 -_08119F38: - adds r0, r4, 0 - movs r1, 0 - bl sub_811A1C8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5, 0x16] - lsls r0, 3 - cmp r4, r0 - blt _08119F38 -_08119F4E: - ldr r1, _08119F5C @ =gUnknown_03005E98 -_08119F50: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08119F74 - .align 2, 0 -_08119F58: .4byte gSharedMem + 0x1C000 -_08119F5C: .4byte gUnknown_03005E98 -_08119F60: - bl sub_811A324 - ldr r0, _08119F84 @ =gUnknown_083FB6F8 - ldrb r1, [r5, 0x3] - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x1 - mov r9, r0 -_08119F74: - mov r0, r9 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08119F84: .4byte gUnknown_083FB6F8 - thumb_func_end sub_8119E3C - - thumb_func_start sub_8119F88 -sub_8119F88: @ 8119F88 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_811A324 - adds r0, r4, 0 - bl sub_811A15C - ldr r1, _08119FC4 @ =gSharedMem + 0x1C000 - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08119FA6 - subs r0, 0x1 - strb r0, [r1, 0x1B] -_08119FA6: - ldrb r0, [r1, 0x1A] - cmp r0, 0 - beq _08119FC8 - subs r0, 0x1 - strb r0, [r1, 0x1A] - lsls r0, 24 - cmp r0, 0 - bne _08119FC8 - ldrh r0, [r1, 0x18] - bl sub_811A0A0 - bl sub_811A124 - b _0811A044 - .align 2, 0 -_08119FC4: .4byte gSharedMem + 0x1C000 -_08119FC8: - ldr r5, _08119FD8 @ =gSharedMem + 0x1C000 - ldrb r0, [r5, 0x10] - cmp r0, 0 - bne _08119FDC - bl sub_811A124 - b _0811A044 - .align 2, 0 -_08119FD8: .4byte gSharedMem + 0x1C000 -_08119FDC: - cmp r0, 0x1 - bne _08119FE6 - bl sub_811A0C0 - b _0811A006 -_08119FE6: - cmp r0, 0x8 - bls _0811A006 - bl IsCryPlaying - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08119FFE - bl sub_811A124 - strb r4, [r5, 0x10] - b _0811A044 -_08119FFE: - bl sub_811A0C0 - movs r0, 0x1 - strb r0, [r5, 0x10] -_0811A006: - ldr r5, _0811A04C @ =gSharedMem + 0x1C000 - ldrb r4, [r5, 0x10] - subs r4, 0x1 - lsls r4, 25 - lsrs r4, 24 - ldrb r0, [r5, 0x16] - lsls r0, 3 - ldrb r1, [r5, 0x11] - adds r0, r1 - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, r5 - ldrb r1, [r1] - bl sub_811A1C8 - ldrb r0, [r5, 0x16] - lsls r0, 3 - ldrb r1, [r5, 0x11] - adds r0, r1 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - adds r4, 0x1 - adds r4, r5 - ldrb r1, [r4] - bl sub_811A1C8 - ldrb r0, [r5, 0x10] - adds r0, 0x1 - strb r0, [r5, 0x10] -_0811A044: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811A04C: .4byte gSharedMem + 0x1C000 - thumb_func_end sub_8119F88 - - thumb_func_start sub_811A050 -sub_811A050: @ 811A050 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - adds r6, r5, 0 - ldr r0, _0811A08C @ =gMPlay_BGM - ldr r0, [r0, 0x4] - cmp r0, 0 - bge _0811A09A - ldr r4, _0811A090 @ =gSharedMem + 0x1C000 - ldrb r0, [r4, 0x1A] - cmp r0, 0 - bne _0811A09A - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _0811A09A - movs r0, 0x4 - strb r0, [r4, 0x1B] - bl IsCryPlaying - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0811A094 - bl StopCry - strh r5, [r4, 0x18] - movs r0, 0x2 - strb r0, [r4, 0x1A] - b _0811A09A - .align 2, 0 -_0811A08C: .4byte gMPlay_BGM -_0811A090: .4byte gSharedMem + 0x1C000 -_0811A094: - adds r0, r6, 0 - bl sub_811A0A0 -_0811A09A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_811A050 - - thumb_func_start sub_811A0A0 -sub_811A0A0: @ 811A0A0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - movs r2, 0x7D - movs r3, 0xA - bl PlayCry2 - ldr r1, _0811A0BC @ =gSharedMem + 0x1C000 - movs r0, 0x1 - strb r0, [r1, 0x10] - pop {r0} - bx r0 - .align 2, 0 -_0811A0BC: .4byte gSharedMem + 0x1C000 - thumb_func_end sub_811A0A0 - - thumb_func_start sub_811A0C0 -sub_811A0C0: @ 811A0C0 - push {r4,lr} - ldr r3, _0811A0D0 @ =gPcmDmaCounter - movs r0, 0 - ldrsb r0, [r3, r0] - cmp r0, 0x1 - bgt _0811A0D8 - ldr r0, _0811A0D4 @ =gSoundInfo + 0x350 - b _0811A0F0 - .align 2, 0 -_0811A0D0: .4byte gPcmDmaCounter -_0811A0D4: .4byte gSoundInfo + 0x350 -_0811A0D8: - ldr r2, _0811A11C @ =gSoundInfo - ldrb r1, [r2, 0xB] - movs r0, 0 - ldrsb r0, [r3, r0] - subs r0, 0x1 - subs r1, r0 - ldr r0, [r2, 0x10] - muls r0, r1 - movs r1, 0xD4 - lsls r1, 2 - adds r2, r1 - adds r0, r2 -_0811A0F0: - movs r1, 0xC6 - lsls r1, 3 - adds r3, r0, r1 - movs r2, 0 - ldr r4, _0811A120 @ =gSharedMem + 0x1C000 -_0811A0FA: - adds r1, r2, r4 - lsls r0, r2, 1 - adds r0, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _0811A0FA - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811A11C: .4byte gSoundInfo -_0811A120: .4byte gSharedMem + 0x1C000 - thumb_func_end sub_811A0C0 - - thumb_func_start sub_811A124 -sub_811A124: @ 811A124 - push {r4,lr} - ldr r4, _0811A158 @ =gSharedMem + 0x1C000 - ldrb r0, [r4, 0x16] - lsls r0, 3 - ldrb r1, [r4, 0x11] - adds r0, r1 - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_811A1C8 - ldrb r0, [r4, 0x16] - lsls r0, 3 - ldrb r4, [r4, 0x11] - adds r0, r4 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_811A1C8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811A158: .4byte gSharedMem + 0x1C000 - thumb_func_end sub_811A124 - - thumb_func_start sub_811A15C -sub_811A15C: @ 811A15C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _0811A1B4 @ =gSharedMem + 0x1C000 - ldrb r1, [r4, 0x11] - movs r2, 0 - bl sub_811A350 - ldrb r0, [r4, 0x11] - adds r0, 0x2 - strb r0, [r4, 0x11] - ldrb r0, [r4, 0x11] - lsrs r0, 3 - ldrb r2, [r4, 0x16] - adds r1, r0, r2 - adds r2, r1, 0x1 - adds r0, r2, 0 - asrs r0, 5 - lsls r0, 5 - subs r0, r2, r0 - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0 - ldr r2, _0811A1B8 @ =0x040000d4 - ldr r6, _0811A1BC @ =gUnknown_083FB718 - ldr r0, _0811A1C0 @ =0xfffe4000 - adds r5, r4, r0 - ldr r4, _0811A1C4 @ =0x80000010 -_0811A194: - str r6, [r2] - lsls r0, r1, 5 - adds r0, r3 - lsls r0, 5 - adds r0, r5 - str r0, [r2, 0x4] - str r4, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _0811A194 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811A1B4: .4byte gSharedMem + 0x1C000 -_0811A1B8: .4byte 0x040000d4 -_0811A1BC: .4byte gUnknown_083FB718 -_0811A1C0: .4byte 0xfffe4000 -_0811A1C4: .4byte 0x80000010 - thumb_func_end sub_811A15C - thumb_func_start sub_811A1C8 sub_811A1C8: @ 811A1C8 push {r4-r7,lr} diff --git a/data/pokedex_cry_screen.s b/data/pokedex_cry_screen.s index 14ea1cfb8..6bb76ce65 100644 --- a/data/pokedex_cry_screen.s +++ b/data/pokedex_cry_screen.s @@ -44,38 +44,7 @@ gUnknown_083FB6F8:: @ 83FB6F8 .incbin "graphics/pokedex/83FB6F8.gbapal" gUnknown_083FB718:: @ 83FB718 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x11 - .byte 0x22 - .byte 0x22 - .byte 0x22 - .byte 0x22 + .incbin "graphics/pokedex/83FB718.4bpp" gUnknown_083FB738:: @ 83FB738 .byte 0xF0, 0x0F diff --git a/graphics/pokedex/83FB718.png b/graphics/pokedex/83FB718.png Binary files differnew file mode 100644 index 000000000..ef52a4138 --- /dev/null +++ b/graphics/pokedex/83FB718.png diff --git a/include/main.h b/include/main.h index f348e48f8..8a7c4d67c 100644 --- a/include/main.h +++ b/include/main.h @@ -65,5 +65,6 @@ void DoSoftReset(void); void ClearPokemonCrySongs(void); extern const char BuildDateTime[]; +extern s8 gPcmDmaCounter; #endif // GUARD_MAIN_H diff --git a/ld_script.txt b/ld_script.txt index d7e2a5820..872386a69 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -343,8 +343,9 @@ SECTIONS { src/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); src/roulette.o(.text); - asm/pokedex_cry_screen.o(.text); src/pokedex_cry_screen.o(.text); + asm/pokedex_cry_screen.o(.text); + src/pokedex_cry_screen.o(.text.ShowPokedexCryScreen); src/coins.o(.text); src/landmark.o(.text); src/fldeff_strength.o(.text); diff --git a/src/main.c b/src/main.c index 54a443e80..d7ef91df0 100644 --- a/src/main.c +++ b/src/main.c @@ -68,7 +68,7 @@ u8 gSoftResetDisabled; IntrFunc gIntrTable[INTR_COUNT]; bool8 gLinkVSyncDisabled; u32 IntrMain_Buffer[0x200]; -u8 gPcmDmaCounter; +s8 gPcmDmaCounter; EWRAM_DATA u8 gSharedMem[0x20000] = {0}; EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL; diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c index 941218fb0..b6abd436d 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokedex_cry_screen.c @@ -1,9 +1,19 @@ #include "global.h" +#include "m4a.h" +#include "main.h" #include "pokedex_cry_screen.h" #include "palette.h" #include "sprite.h" #include "ewram.h" #include "trig.h" +#include "sound.h" + +extern struct SoundInfo gSoundInfo; +extern struct MusicPlayerInfo gMPlay_BGM; + +struct Unk2000000 { + u16 unk0000[7 * 32][16]; +}; struct Unk201C800 { s8 unk_0; @@ -16,17 +26,32 @@ struct PokedexCryScreen_201C000 { u8 unk0000[0x10]; u8 unk0010; - u8 filler_0011[0x7EF]; - struct Unk201C800 unk0800; + u8 unk0011; + u8 unk0012; + u16 unk0014; + u8 unk0016; + u16 species; + u8 unk001A; + u8 unk001B; }; +#define ePokedexCryScreenGfx (*(struct Unk2000000 *)gSharedMem) #define ePokedexCryScreen (*(struct PokedexCryScreen_201C000 *)(gSharedMem + 0x1C000)) +void sub_811A0A0(u16 species); +void sub_811A0C0(void); +void sub_811A124(void); +void sub_811A15C(u8); +void sub_811A1C8(u8, u8); +void sub_811A324(void); +void sub_811A350(u8, u8, u8); void sub_811A6D8(s8); extern u8 gUnknown_03005E98; // data/pokedex_cry_screen.o +extern const u16 gUnknown_083FB6F8[]; +extern const u16 gUnknown_083FB718[]; extern const u16 gUnknown_083FAE7C[]; extern const u16 gUnknown_083FAF1C[]; extern const u8 gUnknown_083FAF3C[]; @@ -40,6 +65,390 @@ extern const struct SpritePalette gCryMeterNeedleSpritePalettes[]; #define CRY_METER_MAP_WIDTH 32 #endif +#ifdef NONMATCHING +u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1) +{ + u8 i; + u8 j; + u16 r6; + u16 r7; + u8 r9 = FALSE; + u32 offset; + + switch (gUnknown_03005E98) + { + case 0: + ePokedexCryScreen.unk0014 = cry->unk0; + ePokedexCryScreen.unk0016 = cry->yPos; + ePokedexCryScreen.unk001A = 0; + ePokedexCryScreen.unk001B = 0; + ePokedexCryScreen.unk0010 = 0; + ePokedexCryScreen.unk0012 = 28; + ePokedexCryScreen.unk0011 = 0; + sub_811A350(arg1, -8 * cry->xPos, 0); + for (i = 0; i < 7; i++) + { + for (j = 0; j < 32; j++) + { + DmaCopy16(3, gUnknown_083FB718, ePokedexCryScreenGfx.unk0000[32 * i + j], 32); + } + } + gUnknown_03005E98++; + break; + case 1: + r7 = cry->unk2 << 11; + r6 = (cry->paletteNo << 12) + ((unsigned)(cry->unk0 << 18) >> 23); + for (i = 0; i < 7; i++) + { + for (j = 0; j < 32; j++) + { + offset = j << 1; + offset += i << 6; + offset += r7; + *((u16 *)(VRAM + offset)) = r6++; + } + } + for (i = 0; i < ePokedexCryScreen.unk0016 * 8; i++) + { + sub_811A1C8(i, 0); + } + gUnknown_03005E98++; + break; + case 2: + sub_811A324(); + LoadPalette(gUnknown_083FB6F8, cry->paletteNo * 16, 32); + r9 = TRUE; + break; + } + return r9; +} +#else +NAKED u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tadds r5, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r2, r1, 24\n" + "\tmovs r0, 0\n" + "\tmov r9, r0\n" + "\tldr r6, _08119E60 @ =gUnknown_03005E98\n" + "\tldrb r0, [r6]\n" + "\tcmp r0, 0x1\n" + "\tbeq _08119EE0\n" + "\tcmp r0, 0x1\n" + "\tbgt _08119E64\n" + "\tcmp r0, 0\n" + "\tbeq _08119E6A\n" + "\tb _08119F74\n" + "\t.align 2, 0\n" + "_08119E60: .4byte gUnknown_03005E98\n" + "_08119E64:\n" + "\tcmp r0, 0x2\n" + "\tbeq _08119F60\n" + "\tb _08119F74\n" + "_08119E6A:\n" + "\tldr r4, _08119ECC @ =gSharedMem + 0x1C000\n" + "\tldrh r0, [r5]\n" + "\tmovs r1, 0\n" + "\tstrh r0, [r4, 0x14]\n" + "\tldrb r0, [r5, 0x5]\n" + "\tstrb r0, [r4, 0x16]\n" + "\tstrb r1, [r4, 0x1A]\n" + "\tstrb r1, [r4, 0x1B]\n" + "\tstrb r1, [r4, 0x10]\n" + "\tmovs r0, 0x1C\n" + "\tstrb r0, [r4, 0x12]\n" + "\tstrb r1, [r4, 0x11]\n" + "\tldrb r1, [r5, 0x4]\n" + "\tlsls r1, 19\n" + "\tnegs r1, r1\n" + "\tasrs r1, 16\n" + "\tadds r0, r2, 0\n" + "\tmovs r2, 0x1\n" + "\tbl sub_811A350\n" + "\tmovs r0, 0\n" + "\tmov r12, r6\n" + "\tldr r1, _08119ED0 @ =0x040000d4\n" + "\tldr r7, _08119ED4 @ =gUnknown_083FB718\n" + "\tldr r2, _08119ED8 @ =0xfffe4000\n" + "\tadds r6, r4, r2\n" + "\tldr r5, _08119EDC @ =0x80000010\n" + "_08119EA0:\n" + "\tmovs r3, 0\n" + "\tadds r4, r0, 0x1\n" + "\tlsls r2, r0, 5\n" + "_08119EA6:\n" + "\tstr r7, [r1]\n" + "\tadds r0, r2, r3\n" + "\tlsls r0, 5\n" + "\tadds r0, r6\n" + "\tstr r0, [r1, 0x4]\n" + "\tstr r5, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x1F\n" + "\tbls _08119EA6\n" + "\tlsls r0, r4, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x6\n" + "\tbls _08119EA0\n" + "\tmov r1, r12\n" + "\tb _08119F50\n" + "\t.align 2, 0\n" + "_08119ECC: .4byte gSharedMem + 0x1C000\n" + "_08119ED0: .4byte 0x040000d4\n" + "_08119ED4: .4byte gUnknown_083FB718\n" + "_08119ED8: .4byte 0xfffe4000\n" + "_08119EDC: .4byte 0x80000010\n" + "_08119EE0:\n" + "\tldrb r0, [r5, 0x2]\n" + "\tlsls r0, 27\n" + "\tlsrs r7, r0, 16\n" + "\tldrb r1, [r5, 0x3]\n" + "\tlsls r1, 12\n" + "\tldrh r0, [r5]\n" + "\tlsls r0, 18\n" + "\tlsrs r0, 23\n" + "\tadds r1, r0\n" + "\tlsls r1, 16\n" + "\tlsrs r6, r1, 16\n" + "\tmovs r0, 0\n" + "\tldr r2, _08119F58 @ =gSharedMem + 0x1C000\n" + "\tmov r8, r2\n" + "\tmovs r1, 0xC0\n" + "\tlsls r1, 19\n" + "\tmov r12, r1\n" + "_08119F02:\n" + "\tmovs r3, 0\n" + "\tadds r4, r0, 0x1\n" + "\tlsls r5, r0, 6\n" + "_08119F08:\n" + "\tlsls r1, r3, 1\n" + "\tadds r1, r5\n" + "\tadds r1, r7\n" + "\tadd r1, r12\n" + "\tadds r2, r6, 0\n" + "\tadds r0, r2, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tstrh r2, [r1]\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x1F\n" + "\tbls _08119F08\n" + "\tlsls r0, r4, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x6\n" + "\tbls _08119F02\n" + "\tmov r2, r8\n" + "\tldrb r0, [r2, 0x16]\n" + "\tmovs r4, 0\n" + "\tcmp r0, 0\n" + "\tbeq _08119F4E\n" + "\tmov r5, r8\n" + "_08119F38:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl sub_811A1C8\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldrb r0, [r5, 0x16]\n" + "\tlsls r0, 3\n" + "\tcmp r4, r0\n" + "\tblt _08119F38\n" + "_08119F4E:\n" + "\tldr r1, _08119F5C @ =gUnknown_03005E98\n" + "_08119F50:\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tb _08119F74\n" + "\t.align 2, 0\n" + "_08119F58: .4byte gSharedMem + 0x1C000\n" + "_08119F5C: .4byte gUnknown_03005E98\n" + "_08119F60:\n" + "\tbl sub_811A324\n" + "\tldr r0, _08119F84 @ =gUnknown_083FB6F8\n" + "\tldrb r1, [r5, 0x3]\n" + "\tlsls r1, 4\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tmovs r0, 0x1\n" + "\tmov r9, r0\n" + "_08119F74:\n" + "\tmov r0, r9\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_08119F84: .4byte gUnknown_083FB6F8"); +} +#endif // NONMATCHING + +void sub_8119F88(u8 a0) +{ + u8 r4; + sub_811A324(); + sub_811A15C(a0); + if (ePokedexCryScreen.unk001B) + ePokedexCryScreen.unk001B--; + if (ePokedexCryScreen.unk001A && !--ePokedexCryScreen.unk001A) + { + sub_811A0A0(ePokedexCryScreen.species); + sub_811A124(); + return; + } + if (ePokedexCryScreen.unk0010 == 0) + { + sub_811A124(); + return; + } + if (ePokedexCryScreen.unk0010 == 1) + { + sub_811A0C0(); + } + else if (ePokedexCryScreen.unk0010 > 8) + { + if (!IsCryPlaying()) + { + sub_811A124(); + ePokedexCryScreen.unk0010 = 0; + return; + } + sub_811A0C0(); + ePokedexCryScreen.unk0010 = 1; + } + r4 = 2 * (ePokedexCryScreen.unk0010 - 1); + sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 2, ePokedexCryScreen.unk0000[r4]); + sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 1, ePokedexCryScreen.unk0000[r4 + 1]); + ePokedexCryScreen.unk0010++; +} + +void sub_811A050(u16 species) +{ + if (gMPlay_BGM.status & MUSICPLAYER_STATUS_PAUSE && !ePokedexCryScreen.unk001A) + { + if (!ePokedexCryScreen.unk001B) + { + ePokedexCryScreen.unk001B = 4; + if (IsCryPlaying() == TRUE) + { + StopCry(); + ePokedexCryScreen.species = species; + ePokedexCryScreen.unk001A = 2; + } + else + sub_811A0A0(species); + } + } +} + +void sub_811A0A0(u16 species) +{ + PlayCry2(species, 0, 0x7d, 10); + ePokedexCryScreen.unk0010 = 1; +} + +#ifdef NONMATCHING +void sub_811A0C0(void) +{ + const s8 * src; + u8 i; + if (gPcmDmaCounter < 2) + src = gSoundInfo.pcmBuffer; + else + src = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank; + src += PCM_DMA_BUF_SIZE; + for (i = 0; i < 16; i++) + ePokedexCryScreen.unk0000[i] = src[i * 2] * 2; +} +#else +NAKED void sub_811A0C0(void) +{ + asm_unified("\tpush {r4,lr}\n" + "\tldr r3, _0811A0D0 @ =gPcmDmaCounter\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r3, r0]\n" + "\tcmp r0, 0x1\n" + "\tbgt _0811A0D8\n" + "\tldr r0, _0811A0D4 @ =gSoundInfo + 0x350\n" + "\tb _0811A0F0\n" + "\t.align 2, 0\n" + "_0811A0D0: .4byte gPcmDmaCounter\n" + "_0811A0D4: .4byte gSoundInfo + 0x350\n" + "_0811A0D8:\n" + "\tldr r2, _0811A11C @ =gSoundInfo\n" + "\tldrb r1, [r2, 0xB]\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r3, r0]\n" + "\tsubs r0, 0x1\n" + "\tsubs r1, r0\n" + "\tldr r0, [r2, 0x10]\n" + "\tmuls r0, r1\n" + "\tmovs r1, 0xD4\n" + "\tlsls r1, 2\n" + "\tadds r2, r1\n" + "\tadds r0, r2\n" + "_0811A0F0:\n" + "\tmovs r1, 0xC6\n" + "\tlsls r1, 3\n" + "\tadds r3, r0, r1\n" + "\tmovs r2, 0\n" + "\tldr r4, _0811A120 @ =gSharedMem + 0x1C000\n" + "_0811A0FA:\n" + "\tadds r1, r2, r4\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, r3\n" + "\tldrb r0, [r0]\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tlsls r0, 1\n" + "\tstrb r0, [r1]\n" + "\tadds r0, r2, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r2, r0, 24\n" + "\tcmp r2, 0xF\n" + "\tbls _0811A0FA\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0811A11C: .4byte gSoundInfo\n" + "_0811A120: .4byte gSharedMem + 0x1C000"); +} +#endif // NONMATCHING + +void sub_811A124(void) +{ + sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 2, 0); + sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 1, 0); +} + +void sub_811A15C(u8 a0) +{ + u8 i; + u16 r3; + sub_811A350(a0, ePokedexCryScreen.unk0011, 0); + ePokedexCryScreen.unk0011 += 2; + r3 = (ePokedexCryScreen.unk0011 / 8 + ePokedexCryScreen.unk0016 + 1) % 32; + for (i = 0; i < 7; i++) + { + DmaCopy16(3, gUnknown_083FB718, ePokedexCryScreenGfx.unk0000[32 * i + r3], 32); + } +} + +asm(".section .text.ShowPokedexCryScreen"); + u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) { int returnVal = FALSE; |