diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-14 22:34:01 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-14 22:34:01 -0400 |
commit | b833bf304963f92de2670529d1d9083180ade9ba (patch) | |
tree | 335cb6dc9df310d546c7e2f83b02c74124a45185 | |
parent | 80985df175f67ea1b90772d2d82c5f97bda44106 (diff) |
sub_8123740
-rw-r--r-- | asm/cable_car.s | 160 | ||||
-rw-r--r-- | include/gba/macro.h | 10 | ||||
-rw-r--r-- | src/scene/cable_car.c | 37 |
3 files changed, 39 insertions, 168 deletions
diff --git a/asm/cable_car.s b/asm/cable_car.s index 6f20f57e3..d1f2ba5a1 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -6,166 +6,6 @@ .text - thumb_func_start sub_8123724 -sub_8123724: @ 8123724 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl MapMusicMain - pop {r0} - bx r0 - thumb_func_end sub_8123724 - - thumb_func_start sub_8123740 -sub_8123740: @ 8123740 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r4, 0 - movs r0, 0 - bl sub_8123FBC - ldr r0, _08123854 @ =gSpriteCoordOffsetX - strh r4, [r0] - movs r0, 0 - bl sub_807C9B4 - add r7, sp, 0x4 - ldr r0, _08123858 @ =gUnknown_08396FC4 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xF0 - movs r2, 0 -_08123766: - lsls r0, r4, 2 - adds r0, r1, r0 - str r2, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x13 - bls _08123766 - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - ldr r2, _0812385C @ =0x02000000 - movs r3, 0x80 - lsls r3, 10 - movs r5, 0 - ldr r1, _08123860 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, _08123864 @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r12, r0 -_08123798: - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _08123798 - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _08123868 @ =gUnknown_02039274 - movs r0, 0 - str r0, [r1] - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - adds r2, r7, 0 - movs r6, 0 - ldr r1, _08123860 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r0, _0812386C @ =0x81000800 - mov r12, r0 - movs r0, 0x81 - lsls r0, 24 - mov r8, r0 -_081237E0: - strh r6, [r2] - str r2, [r1] - str r3, [r1, 0x4] - mov r0, r12 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _081237E0 - strh r6, [r7] - str r7, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r8 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp] - ldr r2, _08123860 @ =0x040000d4 - mov r1, sp - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0xA0 - lsls r0, 19 - strh r4, [r7] - str r7, [r2] - str r0, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - bl warp_in - ldr r0, _08123870 @ =gFieldCallback - str r4, [r0] - ldr r0, _08123874 @ =CB2_LoadMap - bl SetMainCallback2 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123854: .4byte gSpriteCoordOffsetX -_08123858: .4byte gUnknown_08396FC4 -_0812385C: .4byte 0x02000000 -_08123860: .4byte 0x040000d4 -_08123864: .4byte 0x85000400 -_08123868: .4byte gUnknown_02039274 -_0812386C: .4byte 0x81000800 -_08123870: .4byte gFieldCallback -_08123874: .4byte CB2_LoadMap - thumb_func_end sub_8123740 - thumb_func_start sub_8123878 sub_8123878: @ 8123878 push {r4-r7,lr} diff --git a/include/gba/macro.h b/include/gba/macro.h index 71ff15590..a183a44fc 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -87,7 +87,7 @@ #define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ { \ const void *_src = src; \ - void *_dest = dest; \ + void *_dest = (void *)(dest); \ u32 _size = size; \ while (1) \ { \ @@ -110,7 +110,7 @@ #define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ { \ const void *_src = src; \ - void *_dest = dest; \ + void *_dest = (void *)(dest); \ u32 _size = size; \ DmaCopy##bit(dmaNum, _src, _dest, _size); \ } @@ -120,8 +120,8 @@ #define DmaFillLarge(dmaNum, fillval, dest, size, block, bit) \ { \ - void *_dest = dest; \ - u32 _size = (u32)(size); \ + void *_dest = (void *)(dest); \ + u32 _size = (u32)(size); \ while (1) \ { \ DmaFill##bit(dmaNum, fillval, _dest, (block)); \ @@ -140,7 +140,7 @@ #define DmaFillDefvars(dmaNum, fillval, dest, size, bit) \ { \ - void *_dest = dest; \ + void *_dest = (void *)(dest); \ u32 _size = (u##bit)(size); \ DmaFill##bit(dmaNum, fillval, _dest, _size); \ } diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 0f3726e3a..899bb9dba 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "overworld.h" #include "palette.h" #include "main.h" #include "script.h" @@ -127,9 +128,9 @@ void sub_8123244(void) default: SetVBlankCallback(NULL); remove_some_task(); - DmaFill16Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); - DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); - DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); gUnknown_02039274 = &ewram_17000; DmaFill16Large(3, 0, &ewram_17000, 0x10FC, 0x1000); gMain.state ++; @@ -229,3 +230,33 @@ void sub_8123244(void) break; } } + +void sub_8123724(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + MapMusicMain(); +} + +void sub_8123740(void) +{ + u8 i; + + for (i = 0, sub_8123FBC(0), gSpriteCoordOffsetX = 0, sub_807C9B4(0); i < 20; i ++) + { + gUnknown_08396FC4->unk_0f0[i] = NULL; + } + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + DmaFill32Large(3, 0, ewram, 0x20000, 0x1000); + gUnknown_02039274 = NULL; + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); + warp_in(); + gFieldCallback = NULL; + SetMainCallback2(CB2_LoadMap); +} |