mirror of
https://github.com/zeldaret/tmc
synced 2026-05-24 07:11:07 -04:00
Merge pull request #462 from hatal175/scroll
This commit is contained in:
@@ -3181,7 +3181,7 @@ sub_0801AE44: @ 0x0801AE44
|
||||
bl LoadRoomGfx
|
||||
_0801AE5A:
|
||||
bl sub_080809D4
|
||||
bl sub_080805F8
|
||||
bl UpdateIsDiggingCave
|
||||
ldr r0, _0801AEE4 @ =gRoomTransition
|
||||
adds r0, #0x2d
|
||||
ldrb r0, [r0]
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0807FE18 @ =gUpdateVisibleTiles
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
ldrh r0, [r4, #0x18]
|
||||
adds r0, #1
|
||||
strh r0, [r4, #0x18]
|
||||
ldrb r0, [r4, #0x10]
|
||||
cmp r0, #1
|
||||
beq _0807FE44
|
||||
cmp r0, #1
|
||||
bgt _0807FE1C
|
||||
cmp r0, #0
|
||||
beq _0807FE26
|
||||
b _0807FEB6
|
||||
.align 2, 0
|
||||
_0807FE18: .4byte gUpdateVisibleTiles
|
||||
_0807FE1C:
|
||||
cmp r0, #2
|
||||
beq _0807FE68
|
||||
cmp r0, #3
|
||||
beq _0807FE94
|
||||
b _0807FEB6
|
||||
_0807FE26:
|
||||
ldrh r0, [r4, #0xc]
|
||||
subs r0, #4
|
||||
strh r0, [r4, #0xc]
|
||||
ldr r1, [r4, #0x30]
|
||||
ldr r0, _0807FE3C @ =gPlayerEntity
|
||||
cmp r1, r0
|
||||
bne _0807FE80
|
||||
ldr r0, [r1, #0x30]
|
||||
ldr r2, _0807FE40 @ =0xFFFFA000
|
||||
b _0807FE7C
|
||||
.align 2, 0
|
||||
_0807FE3C: .4byte gPlayerEntity
|
||||
_0807FE40: .4byte 0xFFFFA000
|
||||
_0807FE44:
|
||||
ldrh r0, [r4, #0xa]
|
||||
adds r0, #4
|
||||
strh r0, [r4, #0xa]
|
||||
ldr r1, [r4, #0x30]
|
||||
ldr r0, _0807FE64 @ =gPlayerEntity
|
||||
cmp r1, r0
|
||||
bne _0807FE5C
|
||||
ldr r0, [r1, #0x2c]
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #7
|
||||
adds r0, r0, r2
|
||||
str r0, [r1, #0x2c]
|
||||
_0807FE5C:
|
||||
ldrh r0, [r4, #0x18]
|
||||
cmp r0, #0x3c
|
||||
bne _0807FEB6
|
||||
b _0807FE86
|
||||
.align 2, 0
|
||||
_0807FE64: .4byte gPlayerEntity
|
||||
_0807FE68:
|
||||
ldrh r0, [r4, #0xc]
|
||||
adds r0, #4
|
||||
strh r0, [r4, #0xc]
|
||||
ldr r1, [r4, #0x30]
|
||||
ldr r0, _0807FE90 @ =gPlayerEntity
|
||||
cmp r1, r0
|
||||
bne _0807FE80
|
||||
ldr r0, [r1, #0x30]
|
||||
movs r2, #0xc0
|
||||
lsls r2, r2, #7
|
||||
_0807FE7C:
|
||||
adds r0, r0, r2
|
||||
str r0, [r1, #0x30]
|
||||
_0807FE80:
|
||||
ldrh r0, [r4, #0x18]
|
||||
cmp r0, #0x28
|
||||
bne _0807FEB6
|
||||
_0807FE86:
|
||||
adds r0, r4, #0
|
||||
bl sub_0807FEC8
|
||||
b _0807FEB6
|
||||
.align 2, 0
|
||||
_0807FE90: .4byte gPlayerEntity
|
||||
_0807FE94:
|
||||
ldrh r0, [r4, #0xa]
|
||||
subs r0, #4
|
||||
strh r0, [r4, #0xa]
|
||||
ldr r1, [r4, #0x30]
|
||||
ldr r0, _0807FEC0 @ =gPlayerEntity
|
||||
cmp r1, r0
|
||||
bne _0807FEAA
|
||||
ldr r0, [r1, #0x2c]
|
||||
ldr r2, _0807FEC4 @ =0xFFFFC000
|
||||
adds r0, r0, r2
|
||||
str r0, [r1, #0x2c]
|
||||
_0807FEAA:
|
||||
ldrh r0, [r4, #0x18]
|
||||
cmp r0, #0x3c
|
||||
bne _0807FEB6
|
||||
adds r0, r4, #0
|
||||
bl sub_0807FEC8
|
||||
_0807FEB6:
|
||||
movs r0, #0
|
||||
strh r0, [r4, #0x16]
|
||||
bl sub_08080BC4
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0807FEC0: .4byte gPlayerEntity
|
||||
_0807FEC4: .4byte 0xFFFFC000
|
||||
.syntax divided
|
||||
@@ -1,57 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
movs r1, #1
|
||||
strb r1, [r0, #3]
|
||||
ldr r3, _0807FFC8 @ =gScreen
|
||||
ldrh r1, [r3]
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #7
|
||||
adds r0, r2, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r3]
|
||||
adds r2, r3, #0
|
||||
adds r2, #0x60
|
||||
ldrb r0, [r2]
|
||||
movs r4, #0xb8
|
||||
lsls r4, r4, #5
|
||||
adds r1, r4, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
ldrh r1, [r2]
|
||||
movs r0, #0xff
|
||||
lsls r0, r0, #8
|
||||
ands r0, r1
|
||||
movs r1, #7
|
||||
movs r4, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x5a
|
||||
movs r1, #0xf0
|
||||
strh r1, [r0]
|
||||
adds r0, #4
|
||||
strh r1, [r0]
|
||||
bl ResetPlayer
|
||||
bl ResetPlayerAnimationAndAction
|
||||
ldr r0, _0807FFCC @ =gUnk_03004030
|
||||
ldrb r0, [r0, #8]
|
||||
cmp r0, #0
|
||||
beq _0807FFD4
|
||||
ldr r1, _0807FFD0 @ =gPlayerEntity
|
||||
movs r0, #4
|
||||
strb r0, [r1, #0x14]
|
||||
b _0807FFD8
|
||||
.align 2, 0
|
||||
_0807FFC8: .4byte gScreen
|
||||
_0807FFCC: .4byte gUnk_03004030
|
||||
_0807FFD0: .4byte gPlayerEntity
|
||||
_0807FFD4:
|
||||
ldr r0, _0807FFE0 @ =gPlayerEntity
|
||||
strb r4, [r0, #0x14]
|
||||
_0807FFD8:
|
||||
bl sub_080809D4
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0807FFE0: .4byte gPlayerEntity
|
||||
.syntax divided
|
||||
@@ -1,39 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
movs r0, #2
|
||||
strb r0, [r5, #3]
|
||||
bl sub_080803D0
|
||||
adds r0, #6
|
||||
strh r0, [r5, #0x18]
|
||||
ldr r4, _0808002C @ =gUnk_0200B640
|
||||
bl sub_08080278
|
||||
strh r0, [r4]
|
||||
ldr r1, _08080030 @ =gUnk_08109194
|
||||
ldr r0, _08080034 @ =gUnk_03004030
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #3]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0]
|
||||
bl sub_080197D4
|
||||
ldr r4, _08080038 @ =gMapDataTop
|
||||
ldrh r1, [r5, #0x1e]
|
||||
lsrs r1, r1, #4
|
||||
ldrh r2, [r5, #0x20]
|
||||
lsrs r2, r2, #4
|
||||
adds r0, r4, #0
|
||||
bl sub_0807C8B0
|
||||
ldr r0, _0808003C @ =gMapDataTopSpecial
|
||||
subs r4, #4
|
||||
adds r1, r4, #0
|
||||
bl sub_0801AB08
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808002C: .4byte gUnk_0200B640
|
||||
_08080030: .4byte gUnk_08109194
|
||||
_08080034: .4byte gUnk_03004030
|
||||
_08080038: .4byte gMapDataTop
|
||||
_0808003C: .4byte gMapDataTopSpecial
|
||||
.syntax divided
|
||||
@@ -1,102 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
ldrh r4, [r5, #0x18]
|
||||
subs r4, #6
|
||||
strh r4, [r5, #0x18]
|
||||
ldrh r0, [r5, #0x18]
|
||||
lsls r0, r0, #1
|
||||
movs r1, #3
|
||||
bl __divsi3
|
||||
strh r0, [r5, #0x1a]
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
cmp r4, #0x2a
|
||||
bls _080800C6
|
||||
ldr r3, [r5, #0x30]
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r3, r1]
|
||||
movs r2, #0xa
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r2, r0, r1
|
||||
ldrh r1, [r5, #0x18]
|
||||
subs r0, r2, r1
|
||||
adds r7, r0, #0
|
||||
adds r7, #8
|
||||
cmp r7, #0
|
||||
bge _08080078
|
||||
movs r7, #0
|
||||
_08080078:
|
||||
adds r0, r2, r1
|
||||
adds r6, r0, #0
|
||||
subs r6, #8
|
||||
cmp r6, #0xf0
|
||||
ble _08080084
|
||||
movs r6, #0xf0
|
||||
_08080084:
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r3, r1]
|
||||
movs r2, #0xc
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r2, r0, r1
|
||||
ldrh r1, [r5, #0x1a]
|
||||
subs r0, r2, r1
|
||||
adds r4, r0, #0
|
||||
adds r4, #8
|
||||
cmp r4, #0
|
||||
bge _0808009C
|
||||
movs r4, #0
|
||||
_0808009C:
|
||||
adds r0, r2, r1
|
||||
adds r3, r0, #0
|
||||
subs r3, #8
|
||||
cmp r3, #0xa0
|
||||
ble _080800A8
|
||||
movs r3, #0xa0
|
||||
_080800A8:
|
||||
ldr r2, _080800F0 @ =gScreen
|
||||
movs r1, #0xff
|
||||
ands r7, r1
|
||||
lsls r0, r7, #8
|
||||
ands r6, r1
|
||||
orrs r0, r6
|
||||
adds r6, r2, #0
|
||||
adds r6, #0x5a
|
||||
strh r0, [r6]
|
||||
ands r4, r1
|
||||
lsls r0, r4, #8
|
||||
ands r3, r1
|
||||
orrs r0, r3
|
||||
adds r2, #0x5e
|
||||
strh r0, [r2]
|
||||
_080800C6:
|
||||
ldrh r0, [r5, #0x18]
|
||||
cmp r0, #0
|
||||
bne _080800FC
|
||||
movs r0, #3
|
||||
strb r0, [r5, #3]
|
||||
bl DeleteSleepingEntities
|
||||
bl sub_0807C810
|
||||
ldr r1, _080800F4 @ =gUnk_08109194
|
||||
ldr r0, _080800F8 @ =gUnk_03004030
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #3]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #4]
|
||||
bl sub_08080C80
|
||||
b _08080102
|
||||
.align 2, 0
|
||||
_080800F0: .4byte gScreen
|
||||
_080800F4: .4byte gUnk_08109194
|
||||
_080800F8: .4byte gUnk_03004030
|
||||
_080800FC:
|
||||
ldr r1, _08080104 @ =gUpdateVisibleTiles
|
||||
movs r0, #4
|
||||
strb r0, [r1]
|
||||
_08080102:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08080104: .4byte gUpdateVisibleTiles
|
||||
.syntax divided
|
||||
@@ -1,56 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
movs r1, #4
|
||||
strb r1, [r0, #3]
|
||||
ldr r5, _08080178 @ =gMapDataBottom
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #6
|
||||
adds r1, r5, r0
|
||||
movs r6, #0x80
|
||||
lsls r6, r6, #6
|
||||
adds r0, r5, #0
|
||||
adds r2, r6, #0
|
||||
bl MemCopy
|
||||
ldr r4, _0808017C @ =gMapDataTop
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #6
|
||||
adds r1, r4, r0
|
||||
adds r0, r4, #0
|
||||
adds r2, r6, #0
|
||||
bl MemCopy
|
||||
bl sub_08080368
|
||||
ldr r1, _08080180 @ =gUnk_02034480
|
||||
ldr r0, _08080184 @ =gUnk_0200B640
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
ldr r0, _08080188 @ =gUnk_02022830
|
||||
ldr r1, _0808018C @ =gUnk_020246B0
|
||||
movs r2, #0xc0
|
||||
lsls r2, r2, #5
|
||||
bl MemCopy
|
||||
subs r5, #4
|
||||
adds r0, r5, #0
|
||||
bl sub_08080B60
|
||||
subs r4, #4
|
||||
adds r0, r4, #0
|
||||
bl sub_08080B60
|
||||
bl sub_0807BBE4
|
||||
bl sub_0807BC84
|
||||
bl sub_0805E248
|
||||
ldr r0, _08080190 @ =gMapDataBottomSpecial
|
||||
adds r1, r5, #0
|
||||
bl sub_0801AB08
|
||||
ldr r0, _08080194 @ =gMapDataTopSpecial
|
||||
adds r1, r4, #0
|
||||
bl sub_0801AB08
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08080178: .4byte gMapDataBottom
|
||||
_0808017C: .4byte gMapDataTop
|
||||
_08080180: .4byte gUnk_02034480
|
||||
_08080184: .4byte gUnk_0200B640
|
||||
_08080188: .4byte gUnk_02022830
|
||||
_0808018C: .4byte gUnk_020246B0
|
||||
_08080190: .4byte gMapDataBottomSpecial
|
||||
_08080194: .4byte gMapDataTopSpecial
|
||||
.syntax divided
|
||||
@@ -1,100 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
ldrh r4, [r5, #0x18]
|
||||
adds r4, #6
|
||||
strh r4, [r5, #0x18]
|
||||
ldrh r0, [r5, #0x18]
|
||||
lsls r0, r0, #1
|
||||
movs r1, #3
|
||||
bl __divsi3
|
||||
strh r0, [r5, #0x1a]
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
cmp r4, #0x1e
|
||||
bls _08080232
|
||||
ldr r2, [r5, #0x30]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r3, #0xa
|
||||
ldrsh r0, [r5, r3]
|
||||
subs r0, r1, r0
|
||||
ldrh r1, [r5, #0x18]
|
||||
subs r7, r0, r1
|
||||
cmp r7, #0
|
||||
bge _080801F0
|
||||
movs r7, #0
|
||||
_080801F0:
|
||||
adds r6, r0, r1
|
||||
cmp r6, #0xf0
|
||||
ble _080801F8
|
||||
movs r6, #0xf0
|
||||
_080801F8:
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r2, #0xc
|
||||
ldrsh r0, [r5, r2]
|
||||
subs r0, r1, r0
|
||||
ldrh r1, [r5, #0x1a]
|
||||
subs r4, r0, r1
|
||||
cmp r4, #0
|
||||
bge _0808020C
|
||||
movs r4, #0
|
||||
_0808020C:
|
||||
adds r3, r0, r1
|
||||
cmp r3, #0xa0
|
||||
ble _08080214
|
||||
movs r3, #0xa0
|
||||
_08080214:
|
||||
ldr r2, _08080260 @ =gScreen
|
||||
movs r1, #0xff
|
||||
ands r7, r1
|
||||
lsls r0, r7, #8
|
||||
ands r6, r1
|
||||
orrs r0, r6
|
||||
adds r6, r2, #0
|
||||
adds r6, #0x5a
|
||||
strh r0, [r6]
|
||||
ands r4, r1
|
||||
lsls r0, r4, #8
|
||||
ands r3, r1
|
||||
orrs r0, r3
|
||||
adds r2, #0x5e
|
||||
strh r0, [r2]
|
||||
_08080232:
|
||||
ldrh r0, [r5, #0x1c]
|
||||
cmp r0, #0
|
||||
bne _08080268
|
||||
strb r0, [r5, #2]
|
||||
strh r0, [r5]
|
||||
bl ResetSystemPriority
|
||||
ldr r1, _08080260 @ =gScreen
|
||||
ldrh r2, [r1]
|
||||
ldr r0, _08080264 @ =0x0000BFFF
|
||||
ands r0, r2
|
||||
strh r0, [r1]
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x60
|
||||
ldrb r0, [r2]
|
||||
strh r0, [r2]
|
||||
adds r1, #0x62
|
||||
ldrh r2, [r1]
|
||||
movs r0, #0xff
|
||||
lsls r0, r0, #8
|
||||
ands r0, r2
|
||||
strh r0, [r1]
|
||||
b _08080272
|
||||
.align 2, 0
|
||||
_08080260: .4byte gScreen
|
||||
_08080264: .4byte 0x0000BFFF
|
||||
_08080268:
|
||||
ldr r0, _08080274 @ =gUpdateVisibleTiles
|
||||
movs r1, #4
|
||||
strb r1, [r0]
|
||||
movs r0, #0
|
||||
strh r0, [r5, #0x1c]
|
||||
_08080272:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08080274: .4byte gUpdateVisibleTiles
|
||||
.syntax divided
|
||||
+1
-21
@@ -4,30 +4,10 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_0811E768:: @ 0811E768
|
||||
.4byte sub_0807FC64
|
||||
.4byte sub_0807FC7C
|
||||
.4byte sub_0807FDB0
|
||||
.4byte 00000000
|
||||
.4byte sub_0807FEF0
|
||||
.4byte sub_0807FF54
|
||||
|
||||
gUnk_0811E780:: @ 0811E780
|
||||
.4byte sub_0807FDC8
|
||||
.4byte sub_0807FDE4
|
||||
.4byte sub_0807FDF8
|
||||
|
||||
gUnk_0811E78C:: @ 0811E78C
|
||||
.4byte sub_0807FF08
|
||||
.4byte sub_0807FF1C
|
||||
|
||||
gUnk_0811E794:: @ 0811E794
|
||||
.4byte sub_0807FF6C
|
||||
.4byte sub_0807FFE4
|
||||
.4byte sub_08080040
|
||||
.4byte sub_08080108
|
||||
.4byte sub_08080198
|
||||
.4byte sub_080801BC
|
||||
|
||||
|
||||
gUnk_0811E7AC:: @ 0811E7AC
|
||||
.4byte sub_08080794
|
||||
|
||||
+1
-1
@@ -141,7 +141,7 @@ typedef struct {
|
||||
DiggingCaveEntrance* unk_00;
|
||||
u16 unk_04;
|
||||
u16 unk_06;
|
||||
u8 unk_08;
|
||||
u8 isDiggingCave;
|
||||
u8 unk_09;
|
||||
u8 unk_0a;
|
||||
u8 unk_0b;
|
||||
|
||||
@@ -1329,6 +1329,7 @@ SECTIONS {
|
||||
src/flags.o(.rodata);
|
||||
src/save.o(.rodata);
|
||||
src/script.o(.rodata);
|
||||
src/scroll.o(.rodata);
|
||||
data/data_0811E750.o(.rodata);
|
||||
data/const/object/itemOnGround.o(.rodata);
|
||||
src/object/deathFx.o(.rodata);
|
||||
|
||||
@@ -12,7 +12,7 @@ void Manager4_Main(Manager* this) {
|
||||
gUnk_08107C70[this->action](this);
|
||||
}
|
||||
|
||||
extern void sub_080805F8(void);
|
||||
extern void UpdateIsDiggingCave(void);
|
||||
|
||||
extern DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance*, int);
|
||||
|
||||
@@ -21,8 +21,8 @@ void sub_0805786C(Manager* this) {
|
||||
u8 room;
|
||||
u8 area;
|
||||
u16 uVar = 0x81 << 7;
|
||||
sub_080805F8();
|
||||
if (gUnk_03004030.unk_08 != 0) {
|
||||
UpdateIsDiggingCave();
|
||||
if (gUnk_03004030.isDiggingCave != 0) {
|
||||
if (gUnk_03004030.unk_00 == 0) {
|
||||
gUnk_03004030.unk_0a = 0xFF;
|
||||
room = gRoomControls.room;
|
||||
@@ -66,7 +66,7 @@ void sub_08057A18(Manager*, DiggingCaveEntrance*);
|
||||
u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) {
|
||||
u16 offsetX, offsetY, offsetX2, offsetY2;
|
||||
u32 tmp, tmp2;
|
||||
if (gUnk_03004030.unk_08) {
|
||||
if (gUnk_03004030.isDiggingCave) {
|
||||
offsetX = gPlayerEntity.x.HALF.HI - gRoomControls.origin_x;
|
||||
offsetY = gPlayerEntity.y.HALF.HI - gRoomControls.origin_y;
|
||||
offsetX2 = (entr->unk_00 & 0x3F) * 16 + 8;
|
||||
@@ -105,10 +105,10 @@ void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) {
|
||||
gUnk_03004030.unk_06 = gPlayerEntity.y.HALF.HI - gRoomControls.origin_y - ((entr->unk_00 & 0xFC0) >> 2);
|
||||
|
||||
#ifndef EU
|
||||
tmp = gUnk_03004030.unk_08;
|
||||
tmp = gUnk_03004030.isDiggingCave;
|
||||
if (!tmp) {
|
||||
if ((entr->target_room | 0x80) != gUnk_03004030.unk_0b) {
|
||||
gUnk_02034480.unk_00 = gUnk_03004030.unk_08;
|
||||
gUnk_02034480.unk_00 = gUnk_03004030.isDiggingCave;
|
||||
}
|
||||
gUnk_03004030.unk_0b = entr->target_room | 0x80;
|
||||
}
|
||||
|
||||
+247
-31
@@ -7,23 +7,58 @@
|
||||
#include "asm.h"
|
||||
#include "common.h"
|
||||
#include "fileselect.h"
|
||||
#include "screen.h"
|
||||
|
||||
extern void sub_08080BC4(void);
|
||||
extern void sub_080197D4(const void*);
|
||||
extern void sub_0807C8B0(u8*, u32, u32);
|
||||
extern void sub_0801AB08(u8*, u8*);
|
||||
extern void sub_0807C810();
|
||||
extern void DeleteSleepingEntities(void);
|
||||
extern void sub_0807BBE4();
|
||||
extern void sub_0807BC84();
|
||||
extern void sub_0805E248();
|
||||
|
||||
extern u8 gUpdateVisibleTiles;
|
||||
extern u16 gUnk_0200B640;
|
||||
extern u32** gUnk_08109194[];
|
||||
extern u8 gMapDataTop[];
|
||||
extern u8 gMapDataBottom[];
|
||||
extern u8 gUnk_02022830[];
|
||||
extern u8 gUnk_020246B0[];
|
||||
|
||||
extern void (*const gUnk_0811E768[])(RoomControls*);
|
||||
|
||||
void sub_0807FC64(RoomControls*);
|
||||
void sub_0807FC7C(RoomControls*);
|
||||
void sub_080805F8(void);
|
||||
void sub_0807FDB0(RoomControls*);
|
||||
void sub_0807FEF0(RoomControls*);
|
||||
void sub_0807FF54(RoomControls*);
|
||||
void sub_0807FDC8(RoomControls*);
|
||||
void sub_0807FDE4(RoomControls*);
|
||||
void sub_0807FDF8(RoomControls*);
|
||||
void sub_0807FEC8(RoomControls*);
|
||||
void sub_0807FF08(RoomControls*);
|
||||
void sub_0807FF1C(RoomControls*);
|
||||
|
||||
extern void (*const gUnk_0811E780[])(RoomControls*);
|
||||
|
||||
extern void (*const gUnk_0811E794[])(RoomControls*);
|
||||
void sub_0807FF6C(RoomControls*);
|
||||
void sub_0807FFE4(RoomControls*);
|
||||
void sub_08080040(RoomControls*);
|
||||
void sub_08080108(RoomControls*);
|
||||
void sub_08080198(RoomControls*);
|
||||
void sub_080801BC(RoomControls*);
|
||||
void UpdateIsDiggingCave(void);
|
||||
u32 sub_080803D0();
|
||||
u32 sub_08080278();
|
||||
void sub_08080C80(u32*);
|
||||
void sub_08080368();
|
||||
void sub_08080B60(u8*);
|
||||
|
||||
extern u8 gMapDataTopSpecial[];
|
||||
|
||||
void UpdateScroll(void) {
|
||||
static void (*const gUnk_0811E768[])(RoomControls*) = {
|
||||
sub_0807FC64, sub_0807FC7C, sub_0807FDB0, NULL, sub_0807FEF0, sub_0807FF54,
|
||||
};
|
||||
|
||||
gRoomControls.scroll_flags &= 0xfb;
|
||||
gUnk_0811E768[gRoomControls.unk3](&gRoomControls);
|
||||
}
|
||||
@@ -33,12 +68,17 @@ void sub_0807FC64(RoomControls* controls) {
|
||||
controls->reload_flags = 0;
|
||||
controls->unk5 = 4;
|
||||
sub_0807FC7C(controls);
|
||||
sub_080805F8();
|
||||
UpdateIsDiggingCave();
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_0807FC7C.inc", void sub_0807FC7C(RoomControls* controls))
|
||||
|
||||
void sub_0807FDB0(RoomControls* controls) {
|
||||
static void (*const gUnk_0811E780[])(RoomControls*) = {
|
||||
sub_0807FDC8,
|
||||
sub_0807FDE4,
|
||||
sub_0807FDF8,
|
||||
};
|
||||
gUnk_0811E780[controls->unk4](controls);
|
||||
}
|
||||
|
||||
@@ -55,17 +95,70 @@ void sub_0807FDE4(RoomControls* controls) {
|
||||
gUpdateVisibleTiles = 2;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_0807FDF8.inc", void sub_0807FDF8())
|
||||
void sub_0807FDF8(RoomControls* controls) {
|
||||
u32 bVar1;
|
||||
Entity* pEVar2;
|
||||
int iVar3;
|
||||
|
||||
gUpdateVisibleTiles = 2;
|
||||
controls->filler2[0]++;
|
||||
switch (controls->scroll_direction) {
|
||||
case 0:
|
||||
controls->scroll_y -= 4;
|
||||
pEVar2 = controls->camera_target;
|
||||
if (pEVar2 == &gPlayerEntity) {
|
||||
pEVar2->y.WORD = gPlayerEntity.y.WORD - 0x6000;
|
||||
}
|
||||
if (controls->filler2[0] == 0x28) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
controls->scroll_x = controls->scroll_x + 4;
|
||||
if (controls->camera_target == &gPlayerEntity) {
|
||||
gPlayerEntity.x.WORD += 0x4000;
|
||||
}
|
||||
if (controls->filler2[0] == 0x3c) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
controls->scroll_y = controls->scroll_y + 4;
|
||||
pEVar2 = controls->camera_target;
|
||||
if (pEVar2 == &gPlayerEntity) {
|
||||
pEVar2->y.WORD = gPlayerEntity.y.WORD + 0x6000;
|
||||
}
|
||||
if (controls->filler2[0] == 0x28) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
controls->scroll_x -= 4;
|
||||
if (controls->camera_target == &gPlayerEntity) {
|
||||
gPlayerEntity.x.WORD -= 0x4000;
|
||||
}
|
||||
if (controls->filler2[0] == 0x3c) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
controls->shake_duration = 0;
|
||||
sub_08080BC4();
|
||||
}
|
||||
|
||||
void sub_0807FEC8(RoomControls* this) {
|
||||
this->unk3 = 0;
|
||||
MemFill32(0xffffffff, gPlayerState.path_memory, 0x40);
|
||||
MemFill32(0xffffffff, gPlayerState.path_memory, sizeof(gPlayerState.path_memory));
|
||||
gPlayerState.startPosX = this->camera_target->x.HALF.HI;
|
||||
gPlayerState.startPosY = this->camera_target->y.HALF.HI;
|
||||
}
|
||||
|
||||
void sub_0807FEF0(RoomControls* controls) {
|
||||
extern void (*const gUnk_0811E78C[])(RoomControls*);
|
||||
static void (*const gUnk_0811E78C[])(RoomControls*) = {
|
||||
sub_0807FF08,
|
||||
sub_0807FF1C,
|
||||
};
|
||||
gUnk_0811E78C[controls->unk4](controls);
|
||||
}
|
||||
|
||||
@@ -86,16 +179,95 @@ void sub_0807FF1C(RoomControls* controls) {
|
||||
}
|
||||
|
||||
void sub_0807FF54(RoomControls* controls) {
|
||||
static void (*const gUnk_0811E794[])(RoomControls*) = {
|
||||
sub_0807FF6C, sub_0807FFE4, sub_08080040, sub_08080108, sub_08080198, sub_080801BC,
|
||||
};
|
||||
gUnk_0811E794[controls->unk4](controls);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_0807FF6C.inc", void sub_0807FF6C())
|
||||
void sub_0807FF6C(RoomControls* controls) {
|
||||
controls->unk4 = 1;
|
||||
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON;
|
||||
gScreen.controls.windowInsideControl = (u8)gScreen.controls.windowInsideControl | 0x1700;
|
||||
gScreen.controls.windowOutsideControl = (gScreen.controls.windowOutsideControl & 0xff00) | 7;
|
||||
gScreen.controls.window1HorizontalDimensions = 0xf0;
|
||||
gScreen.controls.window1VerticalDimensions = 0xf0;
|
||||
ResetPlayer();
|
||||
ResetPlayerAnimationAndAction();
|
||||
if (gUnk_03004030.isDiggingCave) {
|
||||
gPlayerEntity.animationState = 4;
|
||||
} else {
|
||||
gPlayerEntity.animationState = 0;
|
||||
}
|
||||
sub_080809D4();
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_0807FFE4.inc", void sub_0807FFE4())
|
||||
void sub_0807FFE4(RoomControls* controls) {
|
||||
controls->unk4 = 2;
|
||||
controls->filler2[0] = sub_080803D0() + 6;
|
||||
gUnk_0200B640 = sub_08080278();
|
||||
sub_080197D4(*gUnk_08109194[gUnk_03004030.unk_00->unk_03]);
|
||||
sub_0807C8B0(gMapDataTop, controls->width >> 4, controls->height >> 4);
|
||||
sub_0801AB08(gMapDataTopSpecial, gMapDataTop - 4);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080040.inc", void sub_08080040())
|
||||
void sub_08080040(RoomControls* controls) {
|
||||
int iVar2;
|
||||
int iVar3;
|
||||
int uVar5;
|
||||
int uVar6;
|
||||
int iVar7;
|
||||
int temp;
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080108.inc", void sub_08080108())
|
||||
controls->filler2[0] -= 6;
|
||||
controls->filler2[1] = (controls->filler2[0] << 1) / 3;
|
||||
if (0x2a < controls->filler2[0]) {
|
||||
iVar2 = controls->camera_target->x.HALF.HI - controls->scroll_x;
|
||||
uVar6 = (iVar2 - controls->filler2[0]) + 8;
|
||||
if (uVar6 < 0) {
|
||||
uVar6 = 0;
|
||||
}
|
||||
iVar7 = iVar2 + controls->filler2[0] - 8;
|
||||
if (0xf0 < iVar7) {
|
||||
iVar7 = 0xf0;
|
||||
}
|
||||
temp = controls->camera_target->y.HALF.HI - controls->scroll_y;
|
||||
uVar5 = (temp - controls->filler2[1]) + 8;
|
||||
if (uVar5 < 0) {
|
||||
uVar5 = 0;
|
||||
}
|
||||
iVar3 = temp + controls->filler2[1] - 8;
|
||||
if (0xa0 < iVar3) {
|
||||
iVar3 = 0xa0;
|
||||
}
|
||||
gScreen.controls.window1HorizontalDimensions = ((uVar6 & 0xff) << 8) | (iVar7 & 0xff);
|
||||
gScreen.controls.window1VerticalDimensions = ((uVar5 & 0xff) << 8) | (iVar3 & 0xff);
|
||||
}
|
||||
if (controls->filler2[0] == 0) {
|
||||
controls->unk4 = 3;
|
||||
DeleteSleepingEntities();
|
||||
sub_0807C810();
|
||||
sub_08080C80(*(gUnk_08109194[gUnk_03004030.unk_00->unk_03] + 1));
|
||||
} else {
|
||||
gUpdateVisibleTiles = 4;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08080108(RoomControls* controls) {
|
||||
controls->unk4 = 4;
|
||||
MemCopy(gMapDataBottom, gMapDataBottom + 0x3000, 0x2000);
|
||||
MemCopy(gMapDataTop, gMapDataTop + 0x3000, 0x2000);
|
||||
sub_08080368();
|
||||
gUnk_02034480.unk_00 = gUnk_0200B640;
|
||||
MemCopy(gUnk_02022830, gUnk_020246B0, 0x1800);
|
||||
sub_08080B60(gMapDataBottom - 4);
|
||||
sub_08080B60(gMapDataTop - 4);
|
||||
sub_0807BBE4();
|
||||
sub_0807BC84();
|
||||
sub_0805E248();
|
||||
sub_0801AB08((u8*)&gMapDataBottomSpecial, gMapDataBottom - 4);
|
||||
sub_0801AB08(gMapDataTopSpecial, gMapDataTop - 4);
|
||||
}
|
||||
|
||||
void sub_08080198(RoomControls* controls) {
|
||||
controls->unk4 = 5;
|
||||
@@ -103,35 +275,79 @@ void sub_08080198(RoomControls* controls) {
|
||||
LoadRoom();
|
||||
CallRoomProp5And7();
|
||||
gUpdateVisibleTiles = 0;
|
||||
sub_080805F8();
|
||||
UpdateIsDiggingCave();
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_080801BC.inc", void sub_080801BC())
|
||||
void sub_080801BC(RoomControls* controls) {
|
||||
int iVar2;
|
||||
int iVar3;
|
||||
int uVar5;
|
||||
int uVar6;
|
||||
int iVar7;
|
||||
int temp;
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080278.inc", void sub_08080278())
|
||||
controls->filler2[0] += 6;
|
||||
controls->filler2[1] = (controls->filler2[0] << 1) / 3;
|
||||
if (0x1e < controls->filler2[0]) {
|
||||
iVar2 = controls->camera_target->x.HALF.HI - controls->scroll_x;
|
||||
uVar6 = (iVar2 - controls->filler2[0]);
|
||||
if (uVar6 < 0) {
|
||||
uVar6 = 0;
|
||||
}
|
||||
iVar7 = iVar2 + controls->filler2[0];
|
||||
if (0xf0 < iVar7) {
|
||||
iVar7 = 0xf0;
|
||||
}
|
||||
temp = controls->camera_target->y.HALF.HI - controls->scroll_y;
|
||||
uVar5 = (temp - controls->filler2[1]);
|
||||
if (uVar5 < 0) {
|
||||
uVar5 = 0;
|
||||
}
|
||||
iVar3 = temp + controls->filler2[1];
|
||||
if (0xa0 < iVar3) {
|
||||
iVar3 = 0xa0;
|
||||
}
|
||||
gScreen.controls.window1HorizontalDimensions = ((uVar6 & 0xff) << 8) | (iVar7 & 0xff);
|
||||
gScreen.controls.window1VerticalDimensions = ((uVar5 & 0xff) << 8) | (iVar3 & 0xff);
|
||||
}
|
||||
if (controls->filler2[2] == 0) {
|
||||
controls->unk3 = 0;
|
||||
controls->reload_flags = 0;
|
||||
ResetSystemPriority();
|
||||
gScreen.lcd.displayControl &= ~DISPCNT_WIN1_ON;
|
||||
gScreen.controls.windowInsideControl &= 0xff;
|
||||
gScreen.controls.windowOutsideControl &= 0xff00;
|
||||
} else {
|
||||
gUpdateVisibleTiles = 4;
|
||||
controls->filler2[2] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080278.inc", u32 sub_08080278())
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080368.inc", void sub_08080368())
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_080803D0.inc", void sub_080803D0())
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_080803D0.inc", u32 sub_080803D0())
|
||||
|
||||
void sub_080805F8(void) {
|
||||
void UpdateIsDiggingCave(void) {
|
||||
switch (gRoomControls.area) {
|
||||
case 0xc:
|
||||
case 0x0f:
|
||||
case 0x13:
|
||||
case 0x14:
|
||||
case 0x16:
|
||||
case 0x17:
|
||||
case 0x19:
|
||||
gUnk_03004030.unk_08 = 1;
|
||||
case AREA_LAKE_WOODS_CAVE:
|
||||
case AREA_HYRULE_DIG_CAVES:
|
||||
case AREA_DIG_CAVES_1:
|
||||
case AREA_CRENEL_DIG_CAVE:
|
||||
case AREA_VEIL_FALLS_DIG_CAVE:
|
||||
case AREA_CASTOR_WILDS_DIG_CAVE:
|
||||
case AREA_HYLIA_DIG_CAVES:
|
||||
gUnk_03004030.isDiggingCave = 1;
|
||||
return;
|
||||
}
|
||||
gUnk_03004030.unk_08 = 0;
|
||||
gUnk_03004030.isDiggingCave = 0;
|
||||
}
|
||||
|
||||
void ClearTilemaps(void) {
|
||||
// Is gRoomControls 4 bytes bigger?
|
||||
MemClear(&gRoomControls, 0x38);
|
||||
MemClear(&gUnk_03004030, 0xc);
|
||||
MemClear(&gUnk_03004030, sizeof(gUnk_03004030));
|
||||
gRoomControls.filler3 = 0xffff;
|
||||
gUnk_03004030.unk_0a = 0xff;
|
||||
gUnk_02034480.unk_00 = 0;
|
||||
@@ -265,10 +481,10 @@ void sub_080809D4(void) {
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/UpdateDoorTransition.inc", void UpdateDoorTransition())
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080B60.inc", void sub_08080B60())
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080B60.inc", void sub_08080B60(u8* param_1))
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080BC4.inc", void sub_08080BC4())
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080C80.inc", void sub_08080C80())
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080C80.inc", void sub_08080C80(u32* param_1))
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080CB4.inc", void sub_08080CB4(Entity* a))
|
||||
|
||||
Reference in New Issue
Block a user