summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-10-14 22:34:01 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-10-14 22:34:01 -0400
commitb833bf304963f92de2670529d1d9083180ade9ba (patch)
tree335cb6dc9df310d546c7e2f83b02c74124a45185
parent80985df175f67ea1b90772d2d82c5f97bda44106 (diff)
sub_8123740
-rw-r--r--asm/cable_car.s160
-rw-r--r--include/gba/macro.h10
-rw-r--r--src/scene/cable_car.c37
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);
+}