From 8f0c917ab5ad6d13e1a45b0e0844d59f0bb54499 Mon Sep 17 00:00:00 2001 From: theo3 Date: Sun, 21 Jun 2020 01:40:18 -0700 Subject: [PATCH] manager27 OK --- asm/code_08019444.s | 2 +- asm/code_0801C370.s | 2 +- asm/code_0801D714.s | 4 +- asm/code_0804AA84.s | 2 +- asm/code_0804B9F8.s | 2 +- asm/code_08050038.s | 4 +- asm/code_080526F8.s | 6 +- asm/code_0805E744.s | 2 +- asm/code_080A3480.s | 8 +-- asm/code_080A3BD0.s | 6 +- asm/code_080A5574.s | 2 +- asm/manager10.s | 2 +- asm/manager27.s | 157 +------------------------------------------- asm/manager7.s | 4 +- asm/manager9.s | 2 +- asm/managerC.s | 2 +- asm/sub_080AD3F4.s | 2 +- asm/sub_080AD474.s | 2 +- asm/sub_080AD89C.s | 2 +- linker.ld | 2 +- src/manager27.c | 90 +++++++++++++++++++++++++ 21 files changed, 120 insertions(+), 185 deletions(-) create mode 100644 src/manager27.c diff --git a/asm/code_08019444.s b/asm/code_08019444.s index 4d1d5cc0..49dbad0a 100644 --- a/asm/code_08019444.s +++ b/asm/code_08019444.s @@ -499,7 +499,7 @@ _0801981A: b _0801982E _08019824: ldrh r0, [r4] - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex bl sub_080533CC _0801982E: adds r4, #0xc diff --git a/asm/code_0801C370.s b/asm/code_0801C370.s index 4753950a..c7600459 100644 --- a/asm/code_0801C370.s +++ b/asm/code_0801C370.s @@ -41,7 +41,7 @@ _0801C398: lsrs r0, r0, #1 strb r0, [r5, #4] movs r0, #0xc - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0x10 bl sub_0801D7EC ldr r4, _0801C478 @ =gUnk_02034CB0 diff --git a/asm/code_0801D714.s b/asm/code_0801D714.s index 177cccbe..d1424387 100644 --- a/asm/code_0801D714.s +++ b/asm/code_0801D714.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_0801D714 -sub_0801D714: @ 0x0801D714 + thumb_func_start LoadPalettesByPaletteGroupIndex +LoadPalettesByPaletteGroupIndex: @ 0x0801D714 push {r4, lr} ldr r1, _0801D748 @ =gUnk_080FF850 lsls r0, r0, #2 diff --git a/asm/code_0804AA84.s b/asm/code_0804AA84.s index a0e7d8bb..e0e7dea7 100644 --- a/asm/code_0804AA84.s +++ b/asm/code_0804AA84.s @@ -158,7 +158,7 @@ _0804ABA4: ldr r0, _0804AC0C @ =gUnk_080D4138 adds r4, r4, r0 ldrb r0, [r4] - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldrb r0, [r4, #1] bl sub_0801D7EC ldr r0, _0804AC10 @ =gUnk_02017700 diff --git a/asm/code_0804B9F8.s b/asm/code_0804B9F8.s index dc8fb1c7..acde102d 100644 --- a/asm/code_0804B9F8.s +++ b/asm/code_0804B9F8.s @@ -2378,7 +2378,7 @@ sub_0804C918: @ 0x0804C918 adds r2, r5, #0 bl sub_08000E96 movs r0, #0x19 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex pop {r4, r5, pc} .align 2, 0 _0804C940: .4byte gUnk_086D4460 diff --git a/asm/code_08050038.s b/asm/code_08050038.s index 292c3a43..924795b8 100644 --- a/asm/code_08050038.s +++ b/asm/code_08050038.s @@ -678,7 +678,7 @@ _08050546: movs r0, #5 bl sub_080503A8 movs r0, #9 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r4, #0 _08050586: movs r0, #0x48 @@ -3990,7 +3990,7 @@ sub_08052010: @ 0x08052010 bl sub_0801D630 bl sub_080A4D34 movs r0, #0xa - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0 movs r1, #0 bl sub_0801D79C diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index e0759041..958ca623 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -1594,9 +1594,9 @@ sub_08053320: @ 0x08053320 _08053362: bl sub_08053390 movs r0, #0xb - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0xc - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0 movs r1, #0 bl sub_0801D79C @@ -2215,7 +2215,7 @@ sub_08053800: @ 0x08053800 strb r2, [r1, #7] adds r0, r5, #0 adds r0, #0x8a - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex adds r0, r5, #0 adds r0, #0x3a bl sub_0801D7EC diff --git a/asm/code_0805E744.s b/asm/code_0805E744.s index 33e5bf75..ffa1ec47 100644 --- a/asm/code_0805E744.s +++ b/asm/code_0805E744.s @@ -1058,7 +1058,7 @@ sub_0805EE88: @ 0x0805EE88 ands r1, r0 lsrs r0, r1, #2 adds r0, #0x2f - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex _0805EEAC: pop {pc} .align 2, 0 diff --git a/asm/code_080A3480.s b/asm/code_080A3480.s index 6b1e51dc..b95cc3b4 100644 --- a/asm/code_080A3480.s +++ b/asm/code_080A3480.s @@ -268,9 +268,9 @@ _080A365E: movs r0, #0 bl sub_0801DA90 movs r0, #0xb - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0xc - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0 movs r1, #0 bl sub_0801D79C @@ -348,7 +348,7 @@ sub_080A36F8: @ 0x080A36F8 ldr r0, _080A375C @ =gUnk_08127CEC adds r4, r4, r0 ldrb r0, [r4] - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldrb r0, [r4, #1] bl sub_0801D7EC ldr r0, _080A3760 @ =gUnk_02021F30 @@ -703,7 +703,7 @@ _080A39C8: bl sub_080A3210 bl sub_080A4D34 movs r0, #0xa - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0 movs r1, #0 bl sub_0801D79C diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s index 5fceee8c..622d80ca 100644 --- a/asm/code_080A3BD0.s +++ b/asm/code_080A3BD0.s @@ -17,7 +17,7 @@ sub_080A3BD0: @ 0x080A3BD0 strb r1, [r0] bl sub_080A4D34 movs r0, #0xcb - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex movs r0, #0x75 bl sub_0801D7EC bl sub_080A4494 @@ -2242,7 +2242,7 @@ sub_080A4D34: @ 0x080A4D34 push {lr} bl sub_08053320 movs r0, #0xb5 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldr r1, _080A4D50 @ =gUnk_02002A40 adds r2, r1, #0 adds r2, #0xaa @@ -2371,7 +2371,7 @@ sub_080A4DB8: @ 0x080A4DB8 ldrb r0, [r4] cmp r0, #0 beq _080A4E4A - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex _080A4E4A: ldrb r0, [r4, #1] cmp r0, #0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index c1e8b83d..9afcfc03 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -2344,7 +2344,7 @@ sub_080A67C4: @ 0x080A67C4 push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r0, #0xba - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex adds r5, r4, #0 adds r5, #0x5f cmp r4, #0xb diff --git a/asm/manager10.s b/asm/manager10.s index 2309b9be..88b7358d 100644 --- a/asm/manager10.s +++ b/asm/manager10.s @@ -547,7 +547,7 @@ sub_08059994: @ 0x08059994 cmp r0, #0 beq _080599AE movs r0, #0x5b - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldr r0, _080599B0 @ =gArea ldr r1, _080599B4 @ =0x00000864 adds r0, r0, r1 diff --git a/asm/manager27.s b/asm/manager27.s index ac2177ba..abbe0da4 100644 --- a/asm/manager27.s +++ b/asm/manager27.s @@ -4,159 +4,4 @@ .syntax unified - .text - - thumb_func_start sub_0805C81C -sub_0805C81C: @ 0x0805C81C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0805C854 @ =gUnk_08108D10 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - movs r0, #0xc0 - lsls r0, r0, #2 - ldrb r1, [r4, #0xa] - adds r1, #0x67 - bl CheckLocalFlagByOffset - cmp r0, #0 - beq _0805C85C - ldr r0, _0805C858 @ =gUnk_030010A0 - adds r0, #0xac - movs r1, #1 - ldrb r4, [r4, #0xa] - lsls r1, r4 - ldrh r2, [r0] - orrs r1, r2 - strh r1, [r0] - b _0805C86C - .align 2, 0 -_0805C854: .4byte gUnk_08108D10 -_0805C858: .4byte gUnk_030010A0 -_0805C85C: - ldr r2, _0805C870 @ =gUnk_030010A0 - adds r2, #0xac - movs r1, #1 - ldrb r4, [r4, #0xa] - lsls r1, r4 - ldrh r0, [r2] - bics r0, r1 - strh r0, [r2] -_0805C86C: - pop {r4, pc} - .align 2, 0 -_0805C870: .4byte gUnk_030010A0 - - thumb_func_start sub_0805C874 -sub_0805C874: @ 0x0805C874 - push {r4, lr} - adds r4, r0, #0 - bl sub_0805C920 - cmp r0, #0 - beq _0805C884 - movs r0, #2 - b _0805C886 -_0805C884: - movs r0, #1 -_0805C886: - strb r0, [r4, #0xc] - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0805C894 -sub_0805C894: @ 0x0805C894 - push {r4, lr} - adds r4, r0, #0 - bl sub_0805C920 - cmp r0, #0 - beq _0805C8B0 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #1 - strb r0, [r4, #0xe] - movs r0, #0x8d - lsls r0, r0, #1 - bl PlaySFX -_0805C8B0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0805C8B4 -sub_0805C8B4: @ 0x0805C8B4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0805C8F4 - movs r0, #0x14 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xf] - adds r0, #1 - strb r0, [r4, #0xf] - ands r0, r2 - cmp r0, #5 - bls _0805C8DA - strb r1, [r4, #0xf] -_0805C8DA: - ldr r1, _0805C904 @ =gUnk_08108D20 - ldrb r0, [r4, #0xf] - adds r0, r0, r1 - ldrb r0, [r0] - bl sub_0801D714 - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _0805C8F4 - movs r0, #0x8d - lsls r0, r0, #1 - bl PlaySFX -_0805C8F4: - adds r0, r4, #0 - bl sub_0805C920 - cmp r0, #0 - bne _0805C902 - movs r0, #3 - strb r0, [r4, #0xc] -_0805C902: - pop {r4, pc} - .align 2, 0 -_0805C904: .4byte gUnk_08108D20 - - thumb_func_start sub_0805C908 -sub_0805C908: @ 0x0805C908 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xf] - cmp r0, #0 - bne _0805C918 - movs r0, #1 - strb r0, [r1, #0xc] - b _0805C91E -_0805C918: - adds r0, r1, #0 - bl sub_0805C8B4 -_0805C91E: - pop {pc} - - thumb_func_start sub_0805C920 -sub_0805C920: @ 0x0805C920 - push {lr} - movs r2, #0xc0 - lsls r2, r2, #2 - ldrb r1, [r0, #0xa] - adds r1, #0x67 - adds r0, r2, #0 - bl CheckLocalFlagByOffset - pop {pc} - .align 2, 0 + .text \ No newline at end of file diff --git a/asm/manager7.s b/asm/manager7.s index 482e9199..1a499d1f 100644 --- a/asm/manager7.s +++ b/asm/manager7.s @@ -85,7 +85,7 @@ _08057DD6: ldr r0, _08057E00 @ =gUnk_081081E4 adds r0, r5, r0 ldrb r0, [r0] - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex b _08057E24 .align 2, 0 _08057DF8: .4byte gUnk_02034490 @@ -169,7 +169,7 @@ sub_08057E7C: @ 0x08057E7C ldr r0, _08057EB8 @ =gUnk_081081E4 adds r0, r4, r0 ldrb r0, [r0] - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex lsls r1, r4, #6 ldr r0, _08057EBC @ =gUnk_081080A4 adds r1, r1, r0 diff --git a/asm/manager9.s b/asm/manager9.s index 7c716ed5..2652ea19 100644 --- a/asm/manager9.s +++ b/asm/manager9.s @@ -185,7 +185,7 @@ sub_08058324: @ 0x08058324 str r0, [r1] adds r0, r4, #0 adds r0, #0x86 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex adds r0, r4, #0 adds r0, #0x36 bl sub_0801D7EC diff --git a/asm/managerC.s b/asm/managerC.s index 770a0ca9..bb3acdb3 100644 --- a/asm/managerC.s +++ b/asm/managerC.s @@ -647,7 +647,7 @@ _08058D30: .4byte gRoomControls sub_08058D34: @ 0x08058D34 push {r4, lr} movs r0, #0x28 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldr r0, _08058DAC @ =gUnk_02017700 movs r2, #0x90 lsls r2, r2, #2 diff --git a/asm/sub_080AD3F4.s b/asm/sub_080AD3F4.s index 38d864c1..ea0650f9 100644 --- a/asm/sub_080AD3F4.s +++ b/asm/sub_080AD3F4.s @@ -34,7 +34,7 @@ sub_080AD3F4: @ 0x080AD3F4 movs r1, #1 _080AD42C: adds r0, r1, #0 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldr r0, _080AD454 @ =gScreen ldrh r1, [r0] movs r3, #0x80 diff --git a/asm/sub_080AD474.s b/asm/sub_080AD474.s index e0b0ec0b..1151e449 100644 --- a/asm/sub_080AD474.s +++ b/asm/sub_080AD474.s @@ -57,7 +57,7 @@ _080AD49C: movs r1, #3 _080AD4D2: adds r0, r1, #0 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex ldrb r0, [r4, #7] cmp r0, #0 bne _080AD524 diff --git a/asm/sub_080AD89C.s b/asm/sub_080AD89C.s index a2f00e33..f255d3e8 100644 --- a/asm/sub_080AD89C.s +++ b/asm/sub_080AD89C.s @@ -21,7 +21,7 @@ sub_080AD89C: @ 0x080AD89C strb r0, [r4, #0x10] ldrb r0, [r4, #0x10] adds r0, #5 - bl sub_0801D714 + bl LoadPalettesByPaletteGroupIndex _080AD8BC: ldrb r1, [r4, #0x12] movs r0, #0x1f diff --git a/linker.ld b/linker.ld index ea6b2bf4..ea8515c4 100644 --- a/linker.ld +++ b/linker.ld @@ -499,7 +499,7 @@ SECTIONS { asm/manager24.o(.text); asm/manager25.o(.text); asm/manager26.o(.text); - asm/manager27.o(.text); + src/manager27.o(.text); asm/manager28.o(.text); asm/manager29.o(.text); asm/manager2A.o(.text); diff --git a/src/manager27.c b/src/manager27.c new file mode 100644 index 00000000..db5bd8b6 --- /dev/null +++ b/src/manager27.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "entity.h" +#include "flags.h" +#include "functions.h" + +typedef struct { + u8 filler[0xAC]; + u16 unk; +} struct_030010A0; + +extern u32 sub_0805C920(Entity*); +extern void LoadPalettesByPaletteGroupIndex(u32); +extern void (*const gUnk_08108D10[])(Entity*); + +extern struct_030010A0 gUnk_030010A0; +extern u8 gUnk_08108D20[]; + +void Manager27(Entity *this) +{ + + gUnk_08108D10[this->action](this); + if (CheckLocalFlagByOffset(0x300, this->entityType.form + 0x67)) { + gUnk_030010A0.unk |= (1 << (this->entityType).form); + } + else { + gUnk_030010A0.unk &= ~(1 << (this->entityType).form); + } +} + +void sub_0805C874(Entity *this) +{ + u8 bVar1; + + if (sub_0805C920(this)) { + this->action = 2; + } + else { + this->action = 1; + } + + this->actionDelay = 1; + this->field_0xf = 0; +} + +void sub_0805C894(Entity *this) +{ + + if (sub_0805C920(this)) { + this->action = 2; + this->actionDelay = 1; + PlaySFX(0x11a); + } +} + +void sub_0805C8B4(Entity *this) +{ + u8 bVar1; + int iVar2; + + + if (--this->actionDelay == 0) { + this->actionDelay = 0x14; + + if (5 < ++this->field_0xf) { + this->field_0xf = 0; + } + LoadPalettesByPaletteGroupIndex(gUnk_08108D20[this->field_0xf]); + if (this->field_0xf == 0) { + PlaySFX(0x11a); + } + } + if (sub_0805C920(this) == 0) { + this->action = 3; + } +} + +void sub_0805C908(Entity *this) +{ + if (this->field_0xf == 0) { + this->action = 1; + } + else { + sub_0805C8B4(this); + } +} + +u32 sub_0805C920(Entity *this) +{ + return CheckLocalFlagByOffset(0x300, (this->entityType).form + 0x67); +} \ No newline at end of file