From 83e6edf470500c5b8cb6b14736b4d45bd79364bd Mon Sep 17 00:00:00 2001 From: theo3 Date: Wed, 5 Aug 2020 20:47:10 -0700 Subject: [PATCH] wisp.c OK --- asm/code_0807B9B8.s | 33 +- asm/code_0807CC3C.s | 32 -- asm/wisp.s | 335 ------------------ asm/zeldaFollower.s | 55 --- baserom.gba.pal | Bin 0 -> 100 bytes baserom.gba.spr | Bin 0 -> 3592 bytes graphics/gameover.pal | 19 + graphics/gameover.png | Bin 0 -> 904 bytes include/functions.h | 10 +- include/link.h | 9 +- linker.ld | 4 +- src/code_0807CC3C.c | 25 +- src/code_080808D8.c | 25 -- src/code_0808091C.c | 30 +- src/enemy/bombPeahat.c | 1 - src/enemy/wisp.c | 149 ++++++++ src/npc/zeldaFollower.c | 25 ++ src/room.c | 2 +- src/sub_0807C998.c | 19 +- tools/gbagfx/link.pal | 19 + .../minishmaker-license.txt | 0 21 files changed, 300 insertions(+), 492 deletions(-) delete mode 100644 asm/wisp.s create mode 100644 baserom.gba.pal create mode 100644 baserom.gba.spr create mode 100644 graphics/gameover.pal create mode 100644 graphics/gameover.png delete mode 100644 src/code_080808D8.c create mode 100644 src/enemy/wisp.c create mode 100644 src/npc/zeldaFollower.c create mode 100644 tools/gbagfx/link.pal rename minishmaker-license.txt => tools/minishmaker-license.txt (100%) diff --git a/asm/code_0807B9B8.s b/asm/code_0807B9B8.s index f0d37f9c..83800962 100644 --- a/asm/code_0807B9B8.s +++ b/asm/code_0807B9B8.s @@ -1994,35 +1994,4 @@ _0807C956: mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0807C960 -sub_0807C960: @ 0x0807C960 - push {lr} - adds r2, r0, #0 - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - beq _0807C994 - ldr r0, _0807C984 @ =0x7FFFFFFF - ands r0, r1 - ldr r1, _0807C988 @ =gUnk_08324AE4 - adds r1, r0, r1 - lsrs r0, r2, #0x18 - cmp r0, #6 - bne _0807C98C - adds r0, r1, #0 - adds r1, r2, #0 - bl LZ77UnCompVram - b _0807C994 - .align 2, 0 -_0807C984: .4byte 0x7FFFFFFF -_0807C988: .4byte gUnk_08324AE4 -_0807C98C: - adds r0, r1, #0 - adds r1, r2, #0 - bl LZ77UnCompWram -_0807C994: - pop {pc} - .align 2, 0 - \ No newline at end of file + .align 2, 0 \ No newline at end of file diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index 4ededc8c..87939789 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -5,38 +5,6 @@ .text - thumb_func_start sub_0807CF48 -sub_0807CF48: @ 0x0807CF48 - push {r4, r5, lr} - bl sub_0807D1C4 - adds r4, r0, #0 - ldrh r0, [r4, #4] - ldr r5, _0807CF64 @ =gUnk_0811E4AC - adds r1, r5, #0 - bl sub_0807D184 - ldrh r0, [r4, #2] - adds r1, r5, #0 - bl sub_0807D184 - pop {r4, r5, pc} - .align 2, 0 -_0807CF64: .4byte gUnk_0811E4AC - - thumb_func_start sub_0807CF68 -sub_0807CF68: @ 0x0807CF68 - push {r4, r5, lr} - bl sub_0807D1C4 - adds r4, r0, #0 - ldr r5, _0807CF84 @ =gUnk_0811E4A4 - ldrh r0, [r4, #4] - adds r1, r5, #0 - bl sub_0807D184 - ldrh r0, [r4, #2] - adds r1, r5, #0 - bl sub_0807D184 - pop {r4, r5, pc} - .align 2, 0 -_0807CF84: .4byte gUnk_0811E4A4 - thumb_func_start sub_0807CF88 sub_0807CF88: @ 0x0807CF88 push {r4, r5, r6, r7, lr} diff --git a/asm/wisp.s b/asm/wisp.s deleted file mode 100644 index ac62efac..00000000 --- a/asm/wisp.s +++ /dev/null @@ -1,335 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Wisp -Wisp: @ 0x0803353C - push {lr} - ldr r1, _08033548 @ =gUnk_080CEB74 - bl EnemyFunctionHandler - pop {pc} - .align 2, 0 -_08033548: .4byte gUnk_080CEB74 - - thumb_func_start sub_0803354C -sub_0803354C: @ 0x0803354C - push {lr} - ldr r2, _08033560 @ =gUnk_080CEB8C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08033560: .4byte gUnk_080CEB8C - - thumb_func_start sub_08033564 -sub_08033564: @ 0x08033564 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08033628 - movs r0, #0x3f - ands r0, r1 - cmp r0, #0xe - beq _080335E4 - cmp r0, #0xe - bgt _08033586 - cmp r0, #0 - beq _08033590 - b _08033628 -_08033586: - cmp r0, #0x14 - beq _080335EE - cmp r0, #0x15 - beq _080335E4 - b _08033628 -_08033590: - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #6 - ands r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x7c - movs r0, #0x9f - lsls r0, r0, #2 - strh r0, [r1] - ldr r2, _080335DC @ =gLinkState - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #7 - orrs r0, r1 - str r0, [r2, #0x30] - ldr r1, _080335E0 @ =gUnk_02002A40 - ldrb r2, [r4, #0xa] - adds r0, r2, #1 - adds r3, r1, #0 - adds r3, #0xba - strb r0, [r3] - adds r1, #0xc8 - movs r0, #0x96 - lsls r0, r0, #2 - strh r0, [r1] - lsls r2, r2, #0x18 - cmp r2, #0 - beq _08033628 - bl DeleteThisEntity - b _08033628 - .align 2, 0 -_080335DC: .4byte gLinkState -_080335E0: .4byte gUnk_02002A40 -_080335E4: - adds r1, r4, #0 - adds r1, #0x45 - movs r0, #0 - strb r0, [r1] - b _08033628 -_080335EE: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - movs r1, #0 - strb r0, [r4, #0x10] - adds r0, r4, #0 - adds r0, #0x3d - strb r1, [r0] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _08033624 - str r1, [r4, #0x54] - movs r0, #0xe - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl CopyPosition -_08033624: - bl DeleteThisEntity -_08033628: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0803362C -sub_0803362C: @ 0x0803362C - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F520 - cmp r0, #0 - beq _08033648 - ldr r0, _0803364C @ =gUnk_080CEB98 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_08033648: - pop {r4, pc} - .align 2, 0 -_0803364C: .4byte gUnk_080CEB98 - - thumb_func_start sub_08033650 -sub_08033650: @ 0x08033650 - movs r1, #2 - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start sub_08033658 -sub_08033658: @ 0x08033658 - push {lr} - bl sub_0806F4E8 - pop {pc} - - thumb_func_start sub_08033660 -sub_08033660: @ 0x08033660 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F3E4 - cmp r0, #0 - beq _08033672 - adds r0, r4, #0 - bl sub_0804A7D4 -_08033672: - pop {r4, pc} - - thumb_func_start sub_08033674 -sub_08033674: @ 0x08033674 - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #0 - strb r0, [r4, #0xe] - movs r0, #1 - strb r0, [r4, #0xc] - strb r0, [r4, #0x1c] - ldrh r1, [r4, #0x2e] - adds r0, r4, #0 - adds r0, #0x80 - strh r1, [r0] - ldrh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x82 - strh r0, [r1] - adds r0, r4, #0 - bl sub_08033744 - ldrb r1, [r4, #0xb] - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080336A8 -sub_080336A8: @ 0x080336A8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080336C0 - adds r0, r4, #0 - bl sub_08033744 - b _080336CE -_080336C0: - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _080336CE - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_0800417E -_080336CE: - adds r0, r4, #0 - bl sub_080AEF88 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_080336DC -sub_080336DC: @ 0x080336DC - push {lr} - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x7c - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0xc - beq _0803371E - cmp r0, #0xc - bgt _080336FC - cmp r0, #0 - beq _0803372E - b _08033740 -_080336FC: - cmp r0, #0x18 - beq _08033716 - cmp r0, #0x24 - bne _08033740 - adds r0, r2, #0 - adds r0, #0x80 - ldrh r0, [r0] - strh r0, [r2, #0x2e] - adds r0, r2, #0 - adds r0, #0x82 - ldrh r0, [r0] - strh r0, [r2, #0x32] - b _08033740 -_08033716: - adds r0, r2, #0 - bl sub_080A29BC - b _08033740 -_0803371E: - ldrb r0, [r2, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r2, #0x18] - b _08033740 -_0803372E: - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - adds r0, r2, #0 - bl sub_08033744 -_08033740: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08033744 -sub_08033744: @ 0x08033744 - push {r4, r5, r6, lr} - adds r6, r0, #0 - bl Random - adds r5, r0, #0 - movs r0, #0xff - ands r5, r0 - ldr r1, _0803378C @ =gUnk_080CEBA4 - movs r0, #0x70 - ands r0, r5 - lsrs r0, r0, #4 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r6, #0xe] - movs r0, #0xc - ands r0, r5 - lsls r4, r0, #1 - adds r0, r6, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _08033796 - movs r0, #3 - ands r0, r5 - cmp r0, #0 - beq _08033796 - adds r0, r6, #0 - bl sub_08049EE4 - adds r4, r0, #0 - movs r0, #0x80 - ands r5, r0 - cmp r5, #0 - beq _08033790 - adds r4, #4 - b _08033792 - .align 2, 0 -_0803378C: .4byte gUnk_080CEBA4 -_08033790: - adds r4, #0x1c -_08033792: - movs r0, #0x18 - ands r4, r0 -_08033796: - strb r4, [r6, #0x15] - pop {r4, r5, r6, pc} - .align 2, 0 diff --git a/asm/zeldaFollower.s b/asm/zeldaFollower.s index a85b9394..42000df5 100644 --- a/asm/zeldaFollower.s +++ b/asm/zeldaFollower.s @@ -6,61 +6,6 @@ .text - - thumb_func_start ZeldaFollower -ZeldaFollower: @ 0x080682B0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - adds r2, r0, #0 - cmp r2, #0 - bne _080682F4 - adds r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r0, #4 - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x68 - strb r2, [r0] - adds r0, #1 - strb r2, [r0] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - movs r1, #0 - bl sub_0806854C -_080682F4: - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0806830A - adds r0, r4, #0 - bl sub_08068318 - b _08068314 -_0806830A: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_08068314: - pop {r4, pc} - .align 2, 0 - thumb_func_start sub_08068318 sub_08068318: @ 0x08068318 push {r4, r5, r6, r7, lr} diff --git a/baserom.gba.pal b/baserom.gba.pal new file mode 100644 index 0000000000000000000000000000000000000000..0d552603df0d988e1cc87fe8844003ac427a0470 GIT binary patch literal 100 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 literal 0 HcmV?d00001 diff --git a/graphics/gameover.pal b/graphics/gameover.pal new file mode 100644 index 00000000..32050439 --- /dev/null +++ b/graphics/gameover.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 172 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 230 0 +255 172 16 +246 115 0 +238 65 0 +230 0 0 +180 65 90 +0 0 90 diff --git a/graphics/gameover.png b/graphics/gameover.png new file mode 100644 index 0000000000000000000000000000000000000000..f82d6e33ec3775c9f105f6247b43f44d92a2f65d GIT binary patch literal 904 zcmV;319$w1P)S^xlA>6n150009M zNklMI$ITOk8DdLL+x$1D$xly za%w=mYa5*(^ zt~TcY6!hfWP)4AnYQVWV0bW{4ci`ZJ1Fs0cpVA9pvf~^rHPph=V3_(Uh*tpc&W`NH zgu9G-R62_axus+ia$Eg`wY-R0#0xajRRXxat&?})i1Rf83c9StJL;<>k|Z2LBuQLv ztZ4)ZJ9j5Zz*!eIl7Q20azO%4t22ru;ACG%5^(a0B;Z5{mLZavbM0J=WCTzHIW{4Z z)xeSA`Vb$ZTrxhqpz3GD$9SuF7ZolS^{BiaIsk3sZYUW+(*Yj1C7KdM9`+J|2au`~ z=++tM{&=n%*lY0K9A?OLLz^A#yTb&W2!wlE;;a$aQbwKW;Lr(xuMrPTK{HU=Y>(Ur z;3nX*M&MQj{hER9fbw$9>3IguSB{8$HkAQRj|e~rUZJu%v1SQxtJQtpecP4R#`&%x zEAjgaYOG_L;%WQZ3czP23BW9YJ?E+5Ks~ACv5LDz48oOfANuL_oB$-c$s@p51Dya> zQs^1@*hD+HqUh|^BtT;N13>HKE_aHJ>9r`r-*+uw`w|UYEc0?yx=)HvXRTO&e z>X#s)d*;4>q^+py_1o`U3?wD~#5OrypwJH~a8twIcPu#WPFdP9%^y|-uAe_dqg&qg zUXMG)?lt|!3vsU=#C|}~e365F7Tc@d)y{2CTDYN+J)28^cYx5(aV|8r`rO9}#C;wy zOB#ES1*PsyoMIFcW^@v{|3qCOhZtrpte8*~jtC8DWGxb3dy;6@M3M|fOd>fwNqa~- z1p?%n0?TkvKc%;*$CJ10H@=!y!cRHAB5WN+9qYWP9{_AxKYC1#`WVyH`8lu@d5ec+ z2Tu>j7juz7dJ6BrvkaKhmU06Fc`_*TDMvXM1E_K%wy;rsA-`YP(pr4KK#(field_0x4, gUnk_0811E4AC); + sub_0807D184(temp->field_0x2, gUnk_0811E4AC); +} + +void sub_0807CF68(u32 arg0) +{ + struct_0807D1C4 *temp; + char* str; + + temp = sub_0807D1C4(arg0); + str = gUnk_0811E4A4; + sub_0807D184(temp->field_0x4, str); + sub_0807D184(temp->field_0x2, str); +} \ No newline at end of file diff --git a/src/code_080808D8.c b/src/code_080808D8.c deleted file mode 100644 index e9b9f8f5..00000000 --- a/src/code_080808D8.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "global.h" -#include "entity.h" -#include "structures.h" -#include "functions.h" - -void sub_080808D8(void) { - gScreenTransition.transitionType = 0; -} - -void sub_080808E4(void) { - - if (sub_08052638(gScreenTransition.areaID)) { - gScreenTransition.transitionType = 0; - } else { - gScreenTransition.transitionType = 5; - } -} - -void sub_08080904(void) { - gScreenTransition.transitionType = 1; -} - -void sub_08080910(void) { - gScreenTransition.transitionType = 1; -} \ No newline at end of file diff --git a/src/code_0808091C.c b/src/code_0808091C.c index 1607ddf0..dcb86728 100644 --- a/src/code_0808091C.c +++ b/src/code_0808091C.c @@ -1,4 +1,7 @@ #include "global.h" +#include "entity.h" +#include "structures.h" +#include "functions.h" #include "room.h" extern void sub_0805E5A8(); @@ -6,16 +9,35 @@ extern void sub_0805E5A8(); extern RoomControls gRoomControls; extern u32 gUnk_0200B650; extern u32 gUnk_02025EB0; -extern u8 gScreenTransition[10]; -extern void DoExitTransition(Entity*); +extern void DoExitTransition(ScreenTransitionData*); extern void sub_080809D4(); -void sub_0808091C(Entity* param_1, u32 param_2) +void sub_080808D8(void) { + gScreenTransition.transitionType = 0; +} +void sub_080808E4(void) { + + if (sub_08052638(gScreenTransition.areaID)) { + gScreenTransition.transitionType = 0; + } else { + gScreenTransition.transitionType = 5; + } +} + +void sub_08080904(void) { + gScreenTransition.transitionType = 1; +} + +void sub_08080910(void) { + gScreenTransition.transitionType = 1; +} + +void sub_0808091C(ScreenTransitionData* param_1, u32 param_2) { DoExitTransition(param_1); - gScreenTransition[9] = param_2; + gScreenTransition.transitionType = param_2; return; } diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c index da782b85..1dc3d30f 100644 --- a/src/enemy/bombPeahat.c +++ b/src/enemy/bombPeahat.c @@ -8,7 +8,6 @@ extern u32 GetNextFunction(Entity*); extern void sub_0802AD54(Entity*); extern void sub_0802B048(Entity*); extern void sub_0806F4E8(Entity*); -extern void sub_0806F3E4(Entity*); extern void (*const gUnk_080012C8[])(Entity*); extern void (*const gUnk_080CD0F0[])(Entity*); diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c new file mode 100644 index 00000000..d6729201 --- /dev/null +++ b/src/enemy/wisp.c @@ -0,0 +1,149 @@ +#include "global.h" +#include "entity.h" +#include "enemy.h" +#include "structures.h" +#include "link.h" +#include "functions.h" + +extern void (*const gUnk_080CEB74[])(Entity*); +extern void (*const gUnk_080CEB8C[])(Entity*); +extern void (*const gUnk_080CEB98[])(Entity*); + +extern u8 gUnk_080CEBA4[]; + +void Wisp(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CEB74); +} + +void sub_0803354C(Entity* this) { + gUnk_080CEB8C[this->action](this); +} + +void sub_08033564(Entity* this) { + u32 bits; + Entity* ent; + + bits = this->bitfield; + if ((bits & 0x80) == 0) { + return; + } + + switch ((s32)bits & 0x3f) { + case 0: + this->action = 2; + this->spriteSettings.b.draw = FALSE; + this->flags &= 0x7f; + this->field_0x7c.HALF.LO = 0x27c; + gLinkState.flags.all |= 0x4000; + gUnk_02002A40.stats.filler2[4] = this->entityType.form + 1; + gUnk_02002A40.stats.field_0x20 = 600; + if (this->entityType.form == 0) { + break; + } + DeleteThisEntity(); + break; + case 0xe: + case 0x15: + this->currentHealth = 0; + break; + case 0x14: + this->flags &= 0x7f; + this->hurtBlinkTime = 0; + this->spriteSettings.b.draw = FALSE; + ent = CreateFx(this, 2, 0); + if (ent != NULL) { + this->attachedEntity = ent; + this->actionDelay = 0xe; + CopyPosition(this, ent); + } + DeleteThisEntity(); + break; + } +} + +void sub_0803362C(Entity* this) { + if (sub_0806F520() != 0) { + gUnk_080CEB98[this->previousActionFlag](this); + } +} + +void sub_08033650(Entity* this) { + this->previousActionFlag = 2; +} + +void sub_08033658(Entity* this) { + sub_0806F4E8(); +} + +void sub_08033660(Entity* this) { + if (sub_0806F3E4(this)) { + sub_0804A7D4(this); + } +} + +void sub_08033674(Entity* this) { + sub_0804A720(this); + this->actionDelay = 0; + this->action = 1; + this->filler[0] = 1; + this->field_0x80.HWORD = this->x.HALF.HI; + this->field_0x82.HWORD = this->y.HALF.HI; + sub_08033744(this); + InitializeAnimation(this, this->entityType.parameter); +} + +void sub_080336A8(Entity* this) { + if (--this->actionDelay == 0) { + sub_08033744(this); + } else if (this->collisions != 0) { + sub_0800417E(this, this->collisions); + } + sub_080AEF88(this); + GetNextFrame(this); +} + +void sub_080336DC(Entity* this) { + switch ((u16)-- this->field_0x7c.HALF.LO) { + case 0x24: + this->x.HALF.HI = this->field_0x80.HWORD; + this->y.HALF.HI = this->field_0x82.HWORD; + break; + case 0x18: + sub_080A29BC(this); + break; + case 0xc: + this->spriteSettings.b.draw = TRUE; + break; + case 0x0: + this->action = 1; + this->flags |= 0x80; + sub_08033744(this); + break; + } +} + +void sub_08033744(Entity* this) { + u32 temp; + u32 rand = (u32)Random() % 256; + + // 8 potential options + this->actionDelay = gUnk_080CEBA4[(rand & 0x70) >> 4]; + + // 4 potential options + temp = ((rand & 0xc) * 2); + + // 75% chance to pass + if ((sub_08049FA0(this) == 0) && ((rand % 4) != 0)) { + temp = sub_08049EE4(this); + + // 50% chance to pass + if ((rand & 0x80) != 0) { + temp += 0x4; + temp &= 0x18; + } else { + temp += 0x1c; + temp &= 0x18; + } + } + this->direction = temp; +} \ No newline at end of file diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c new file mode 100644 index 00000000..3dec4d10 --- /dev/null +++ b/src/npc/zeldaFollower.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "entity.h" +#include "functions.h" + +extern void sub_08068318(Entity*); +extern void sub_0806854C(Entity*, u32); + +void ZeldaFollower(Entity *this) +{ + if (this->action == 0) { + this->action++; + this->spriteSettings.b.draw = TRUE; + this->animationState = 4; + this->field_0x68.HALF.LO = 0; + this->field_0x68.HALF.HI = 0; + sub_0805E3A0(this, 2); + InitAnimationForceUpdate(this, 0); + sub_0806854C(this, 0); + } + if ((s8)this->field_0x68.HALF.LO != 0) { + sub_08068318(this); + } else { + this->spriteSettings.b.draw = FALSE; + } +} \ No newline at end of file diff --git a/src/room.c b/src/room.c index 4246c675..7d9e46d4 100644 --- a/src/room.c +++ b/src/room.c @@ -665,7 +665,7 @@ void sub_0804BC70(void) { } } -extern u32 gUnk_0813AB80; +extern ScreenTransitionData gUnk_0813AB80; void sub_0804BCDC() { sub_0808091C(&gUnk_0813AB80, 4); diff --git a/src/sub_0807C998.c b/src/sub_0807C998.c index a1d16fdf..bc31e322 100644 --- a/src/sub_0807C998.c +++ b/src/sub_0807C998.c @@ -1,12 +1,29 @@ #include "global.h" +#include "entity.h" extern void sub_0807C960(); extern u32 gUnk_0202CEB4; extern u32 gUnk_02012654; +extern u8 gUnk_08324AE4; + +void sub_0807C960(void* dest, u32 offset) +{ + void* temp; + + if (offset != -1) { + temp = &gUnk_08324AE4 + (offset & 0x7fffffff); + if ((u32)dest >> 0x18 == 6) { + LZ77UnCompVram(temp, (void *)dest); + } + else { + LZ77UnCompWram(temp, (void *)dest); + } + } +} void sub_0807C998(u32* a1) { sub_0807C960(&gUnk_0202CEB4, a1[0]); sub_0807C960(&gUnk_0202CEB4 - 0x800, a1[1]); sub_0807C960(&gUnk_02012654, a1[2]); sub_0807C960(&gUnk_02012654 - 0x800, a1[3]); -} +} \ No newline at end of file diff --git a/tools/gbagfx/link.pal b/tools/gbagfx/link.pal new file mode 100644 index 00000000..f7ee0b1d --- /dev/null +++ b/tools/gbagfx/link.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +65 180 139 +222 41 41 +123 16 41 +16 123 41 +65 164 41 +16 255 8 +49 82 255 +189 255 164 +222 172 82 +255 255 0 +115 65 32 +164 123 65 +213 180 139 +255 230 189 +255 255 255 +0 0 0 diff --git a/minishmaker-license.txt b/tools/minishmaker-license.txt similarity index 100% rename from minishmaker-license.txt rename to tools/minishmaker-license.txt