diff options
-rw-r--r-- | asm/pokenav.s | 258 | ||||
-rw-r--r-- | src/pokenav_before.c | 108 |
2 files changed, 106 insertions, 260 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 122cdca83..13ec84baf 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -6,264 +6,6 @@ .text - thumb_func_start sub_80EE06C -sub_80EE06C: @ 80EE06C - push {r4,r5,lr} - ldr r1, _080EE08C @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r0, r1, r2 - ldrh r0, [r0] - adds r4, r1, 0 - cmp r0, 0x8 - bls _080EE080 - b _080EE288 -_080EE080: - lsls r0, 2 - ldr r1, _080EE090 @ =_080EE094 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EE08C: .4byte 0x02000000 -_080EE090: .4byte _080EE094 - .align 2, 0 -_080EE094: - .4byte _080EE0B8 - .4byte _080EE0CC - .4byte _080EE180 - .4byte _080EE19C - .4byte _080EE1B8 - .4byte _080EE1D0 - .4byte _080EE1F8 - .4byte _080EE250 - .4byte _080EE26C -_080EE0B8: - bl sub_80F15A8 - ldr r1, _080EE0C8 @ =0x02000000 - movs r5, 0xC1 - lsls r5, 2 - adds r1, r5 - b _080EE1C4 - .align 2, 0 -_080EE0C8: .4byte 0x02000000 -_080EE0CC: - ldr r2, _080EE0FC @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _080EE104 - ldr r1, _080EE100 @ =0x000087dc - adds r0, r4, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - beq _080EE104 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl sub_80F6A4C - movs r5, 0xC1 - lsls r5, 2 - adds r1, r4, r5 - b _080EE1C4 - .align 2, 0 -_080EE0FC: .4byte gMain -_080EE100: .4byte 0x000087dc -_080EE104: - ldrh r1, [r3, 0x30] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080EE140 - ldr r1, _080EE138 @ =0x000087dc - adds r0, r4, r1 - ldr r2, _080EE13C @ =0x00008774 - adds r1, r4, r2 - movs r5, 0 - ldrsh r2, [r0, r5] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r2, r0 - bge _080EE140 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_80F6A4C - movs r0, 0xC1 - lsls r0, 2 - adds r1, r4, r0 - b _080EE1C4 - .align 2, 0 -_080EE138: .4byte 0x000087dc -_080EE13C: .4byte 0x00008774 -_080EE140: - ldrh r2, [r3, 0x2E] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080EE164 - movs r0, 0x5 - bl PlaySE - movs r0, 0xB - bl sub_80EEFBC - ldr r0, _080EE160 @ =0x02000000 - movs r1, 0xC1 - lsls r1, 2 - adds r0, r1 - b _080EE262 - .align 2, 0 -_080EE160: .4byte 0x02000000 -_080EE164: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - bne _080EE16E - b _080EE288 -_080EE16E: - movs r0, 0x5 - bl PlaySE - ldr r0, _080EE17C @ =sub_80EE294 - bl sub_80EBDBC - b _080EE288 - .align 2, 0 -_080EE17C: .4byte sub_80EE294 -_080EE180: - bl sub_80F6AF0 - lsls r0, 24 - cmp r0, 0 - beq _080EE18C - b _080EE288 -_080EE18C: - ldr r1, _080EE198 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - b _080EE1C4 - .align 2, 0 -_080EE198: .4byte 0x02000000 -_080EE19C: - bl sub_8055870 - adds r1, r0, 0 - cmp r1, 0 - bne _080EE288 - ldr r0, _080EE1B4 @ =0x02000000 - movs r5, 0xC1 - lsls r5, 2 - adds r0, r5 - strh r1, [r0] - b _080EE288 - .align 2, 0 -_080EE1B4: .4byte 0x02000000 -_080EE1B8: - bl sub_80F3B00 - ldr r1, _080EE1CC @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 -_080EE1C4: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _080EE288 - .align 2, 0 -_080EE1CC: .4byte 0x02000000 -_080EE1D0: - bl sub_80F3B58 - lsls r0, 24 - cmp r0, 0 - bne _080EE288 - bl sub_80F1494 - ldr r1, _080EE1F4 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl sub_80EED9C - b _080EE288 - .align 2, 0 -_080EE1F4: .4byte 0x02000000 -_080EE1F8: - bl sub_80F68E8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080EE224 - cmp r0, 0x1 - bne _080EE224 - movs r0, 0x5 - bl PlaySE - bl sub_80F3B94 - ldr r0, _080EE220 @ =0x02000000 - movs r5, 0xC1 - lsls r5, 2 - adds r0, r5 - movs r1, 0x7 - strh r1, [r0] - b _080EE288 - .align 2, 0 -_080EE220: .4byte 0x02000000 -_080EE224: - ldr r0, _080EE248 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080EE288 - movs r0, 0x5 - bl PlaySE - bl sub_80F3B94 - ldr r0, _080EE24C @ =0x02000000 - movs r1, 0xC1 - lsls r1, 2 - adds r0, r1 - movs r1, 0x8 - strh r1, [r0] - b _080EE288 - .align 2, 0 -_080EE248: .4byte gMain -_080EE24C: .4byte 0x02000000 -_080EE250: - bl sub_80F3BD4 - lsls r0, 24 - cmp r0, 0 - bne _080EE288 - ldr r0, _080EE268 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r0, r2 -_080EE262: - movs r1, 0x4 - strh r1, [r0] - b _080EE288 - .align 2, 0 -_080EE268: .4byte 0x02000000 -_080EE26C: - bl sub_80F3BD4 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080EE288 - movs r0, 0x5 - bl sub_80EEFBC - ldr r0, _080EE290 @ =0x02000000 - movs r5, 0xC1 - lsls r5, 2 - adds r0, r5 - strh r4, [r0] -_080EE288: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EE290: .4byte 0x02000000 - thumb_func_end sub_80EE06C - thumb_func_start sub_80EE294 sub_80EE294: @ 80EE294 push {r4,lr} diff --git a/src/pokenav_before.c b/src/pokenav_before.c index af0933069..ba2e22b0b 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -41,9 +41,13 @@ struct UnknownPokenav0 { /* 0x76AA */ u8 var76aa; /* 0x76AB */ u8 fill76AB[0x10BD]; /* 0x8768 */ u32 var8768; - /* 0x876C */ u8 fill876B[0x6C]; + /* 0x876C */ u8 fill876C[0x8]; + /* 0x8774 */ s16 var8774; + /* 0x8776 */ u8 fill8776[0x62]; /* 0x87D8 */ u8 var87D8; - /* 0x87D9 */ u8 fill87D9[0x4F]; + /* 0x87D9 */ u8 fill87D9[0x3]; + /* 0x87DC */ s16 var87DC; + /* 0x87DE */ u8 fill87DE[0x4a]; /* 0x8828 */ u8 var8828; /* 0x8829 */ u8 fill8829[0x07bf]; /* 0x8FE8 */ s8 var8fe8; @@ -1986,5 +1990,105 @@ void sub_80EDEE4() { sub_80EBDBC(&sub_80EE06C); break; } +} +void sub_80F15A8(); +void sub_80F6A4C(); +bool8 sub_80F6AF0(); +void sub_80F3B00(); +bool8 sub_80F3B58(); +void sub_80F1494(); +u8 sub_80F68E8(); +void sub_80F3B94(); +bool8 sub_80F3BD4(); +void sub_80EE294(); + +void sub_80EE06C() { + u32 var1; + u16 var2; + switch (ewram0.var304) { + case 0: + sub_80F15A8(); + ewram0.var304++; + break; + case 1: + if (gMain.newAndRepeatedKeys & 0x40) { + if (ewram0.var87DC) { + PlaySE(0x5); + sub_80F6A4C(-1); + ewram0.var304++; + } + else goto label1; + } + else goto label1; + break; +label1: + if (gMain.newAndRepeatedKeys & 0x80) { + if (ewram0.var87DC < ewram0.var8774) { + PlaySE(0x5); + sub_80F6A4C(1); + ewram0.var304++; + } + else goto label2; + } + else goto label2; + break; +label2: + if (gMain.newKeys & A_BUTTON) { + PlaySE(0x5); + sub_80EEFBC(0xB); + ewram0.var304 = 0x4; + } + else if (gMain.newKeys & B_BUTTON) { + PlaySE(0x5); + sub_80EBDBC(&sub_80EE294); + } + break; + case 2: + if (sub_80F6AF0()) return; + ewram0.var304++; + break; + case 3: + var1 = sub_8055870(); + if (var1) return; + ewram0.var304 = var1; + break; + case 4: + sub_80F3B00(); + ewram0.var304++; + break; + case 5: + if (sub_80F3B58()) return; + sub_80F1494(); + ewram0.var304++; + sub_80EED9C(); + break; + case 6: + switch (sub_80F68E8()) { + case 1: + PlaySE(0x5); + sub_80F3B94(); + ewram0.var304 = 0x7; + break; + default: + case 0: + if (gMain.newKeys & B_BUTTON) { + PlaySE(0x5); + sub_80F3B94(); + ewram0.var304 = 0x8; + } + break; + } + break; + case 7: + if (sub_80F3BD4()) return; + ewram0.var304 = 0x4; + break; + case 8: + var2 = sub_80F3BD4(); + if (var2) return; + sub_80EEFBC(0x5); + ewram0.var304 = var2; + break; + } } |