mirror of
https://github.com/pret/pokeruby.git
synced 2025-02-18 12:18:17 +00:00
decompile fldeff_secret_base_pc
This commit is contained in:
parent
41c347c815
commit
e0e5d070fa
190
asm/fldeff_pc.s
190
asm/fldeff_pc.s
@ -1,190 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "constants/species_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start FldEff_PCTurnOn
|
||||
FldEff_PCTurnOn: @ 80C6718
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
mov r4, sp
|
||||
adds r4, 0x2
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl GetXYCoordsOneStepInFrontOfPlayer
|
||||
ldr r0, _080C6758 @ =sub_80C6760
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080C675C @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
movs r2, 0
|
||||
strh r0, [r1, 0x8]
|
||||
ldrh r0, [r4]
|
||||
strh r0, [r1, 0xA]
|
||||
strh r2, [r1, 0xC]
|
||||
movs r0, 0
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080C6758: .4byte sub_80C6760
|
||||
_080C675C: .4byte gTasks
|
||||
thumb_func_end FldEff_PCTurnOn
|
||||
|
||||
thumb_func_start sub_80C6760
|
||||
sub_80C6760: @ 80C6760
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
ldr r1, _080C6788 @ =gTasks + 0x8
|
||||
adds r4, r0, r1
|
||||
ldrh r0, [r4, 0x4]
|
||||
subs r0, 0x4
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x10
|
||||
bhi _080C682E
|
||||
lsls r0, 2
|
||||
ldr r1, _080C678C @ =_080C6790
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080C6788: .4byte gTasks + 0x8
|
||||
_080C678C: .4byte _080C6790
|
||||
.align 2, 0
|
||||
_080C6790:
|
||||
.4byte _080C67D4
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C67E2
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C67D4
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C67E2
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C682E
|
||||
.4byte _080C6800
|
||||
_080C67D4:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r2, 0x89
|
||||
lsls r2, 2
|
||||
b _080C67EE
|
||||
_080C67E2:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r2, 0x88
|
||||
lsls r2, 2
|
||||
_080C67EE:
|
||||
bl MapGridSetMetatileIdAt
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl CurrentMapDrawMetatileAt
|
||||
b _080C682E
|
||||
_080C6800:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r2, 0x89
|
||||
lsls r2, 2
|
||||
bl MapGridSetMetatileIdAt
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl CurrentMapDrawMetatileAt
|
||||
movs r0, 0x3D
|
||||
bl FieldEffectActiveListRemove
|
||||
bl EnableBothScriptContexts
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
b _080C6834
|
||||
_080C682E:
|
||||
ldrh r0, [r4, 0x4]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x4]
|
||||
_080C6834:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C6760
|
||||
|
||||
thumb_func_start sub_80C683C
|
||||
sub_80C683C: @ 80C683C
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
mov r4, sp
|
||||
adds r4, 0x2
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl GetXYCoordsOneStepInFrontOfPlayer
|
||||
movs r0, 0x3
|
||||
bl PlaySE
|
||||
ldr r0, _080C6874 @ =0x00004054
|
||||
bl VarGet
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bne _080C6878
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r2, 0xE2
|
||||
lsls r2, 4
|
||||
bl MapGridSetMetatileIdAt
|
||||
b _080C6888
|
||||
.align 2, 0
|
||||
_080C6874: .4byte 0x00004054
|
||||
_080C6878:
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r4, r2]
|
||||
ldr r2, _080C68A0 @ =0x00000e21
|
||||
bl MapGridSetMetatileIdAt
|
||||
_080C6888:
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r4, r2]
|
||||
bl CurrentMapDrawMetatileAt
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C68A0: .4byte 0x00000e21
|
||||
thumb_func_end sub_80C683C
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
@ -486,7 +486,7 @@ EventScript_15F4A1:
|
||||
goto_if_eq EventScript_15F452
|
||||
msgbox UnknownString_81A3A22, 3
|
||||
special sub_80BC5BC
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
releaseall
|
||||
end
|
||||
|
||||
@ -496,13 +496,13 @@ EventScript_15F4E0:
|
||||
goto_if_eq EventScript_15F452
|
||||
msgbox UnknownString_81A3A3A, 3
|
||||
special sub_80BC5BC
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
releaseall
|
||||
end
|
||||
|
||||
EventScript_15F503:
|
||||
msgbox UnknownString_81A39C0, 3
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
closemessage
|
||||
releaseall
|
||||
end
|
||||
@ -514,7 +514,7 @@ EventScript_15F511:
|
||||
end
|
||||
|
||||
EventScript_15F51D:
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
closemessage
|
||||
releaseall
|
||||
end
|
||||
|
@ -486,7 +486,7 @@ EventScript_15F4A1:
|
||||
goto_if_eq EventScript_15F452
|
||||
msgbox UnknownString_81A3A22, 3
|
||||
special sub_80BC5BC
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
releaseall
|
||||
end
|
||||
|
||||
@ -496,13 +496,13 @@ EventScript_15F4E0:
|
||||
goto_if_eq EventScript_15F452
|
||||
msgbox UnknownString_81A3A3A, 3
|
||||
special sub_80BC5BC
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
releaseall
|
||||
end
|
||||
|
||||
EventScript_15F503:
|
||||
msgbox UnknownString_81A39C0, 3
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
closemessage
|
||||
releaseall
|
||||
end
|
||||
@ -514,7 +514,7 @@ EventScript_15F511:
|
||||
end
|
||||
|
||||
EventScript_15F51D:
|
||||
special sub_80C683C
|
||||
special DoSecretBasePCTurnOffEffect
|
||||
closemessage
|
||||
releaseall
|
||||
end
|
||||
|
@ -318,7 +318,7 @@ gFieldEffectScript_UseFlyAncientTomb: @ 81D9E26
|
||||
end
|
||||
|
||||
gFieldEffectScript_PCTurnOn: @ 81D9E2C
|
||||
callnative FldEff_PCTurnOn
|
||||
callnative FldEff_SecretBasePCTurnOn
|
||||
end
|
||||
|
||||
gFieldEffectScript_HallOfFameRecord: @ 81D9E32
|
||||
|
@ -33,7 +33,7 @@ gSpecials::
|
||||
def_special sub_8100A7C
|
||||
def_special sub_80BBC78
|
||||
def_special sub_80BCE4C
|
||||
def_special sub_80C683C
|
||||
def_special DoSecretBasePCTurnOffEffect
|
||||
def_special sub_80B929C
|
||||
def_special sub_808347C
|
||||
def_special sub_80834E4
|
||||
|
@ -67,7 +67,7 @@ enum FieldEffectScriptIdx
|
||||
FLDEFF_CUT_GRASS,
|
||||
FLDEFF_FIELD_MOVE_SHOW_MON_INIT,
|
||||
FLDEFF_USE_FLY_ANCIENT_TOMB,
|
||||
FLDEFF_PCTURN_ON,
|
||||
FLDEFF_SECRET_BASE_PC_TURN_ON,
|
||||
FLDEFF_HALL_OF_FAME_RECORD,
|
||||
FLDEFF_USE_TELEPORT
|
||||
};
|
||||
|
@ -160,7 +160,7 @@ SECTIONS {
|
||||
src/pokemon/pokemon_size_record.o(.text);
|
||||
asm/pc_screen_effect.o(.text);
|
||||
asm/fldeff_secretpower.o(.text);
|
||||
asm/fldeff_pc.o(.text);
|
||||
src/field/fldeff_secret_base_pc.o(.text);
|
||||
asm/fldeff_decoration.o(.text);
|
||||
src/field/fldeff_poison.o(.text);
|
||||
asm/fldeff_berrytree.o(.text);
|
||||
|
69
src/field/fldeff_secret_base_pc.c
Normal file
69
src/field/fldeff_secret_base_pc.c
Normal file
@ -0,0 +1,69 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "script.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
|
||||
static void Task_SecretBasePCTurnOn(u8);
|
||||
|
||||
u32 FldEff_SecretBasePCTurnOn(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 taskId;
|
||||
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||
taskId = CreateTask(Task_SecretBasePCTurnOn, 0);
|
||||
gTasks[taskId].data[0] = x;
|
||||
gTasks[taskId].data[1] = y;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void Task_SecretBasePCTurnOn(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
switch (data[2])
|
||||
{
|
||||
case 4:
|
||||
case 12:
|
||||
MapGridSetMetatileIdAt(data[0], data[1], 548);
|
||||
CurrentMapDrawMetatileAt(data[0], data[1]);
|
||||
break;
|
||||
case 8:
|
||||
case 16:
|
||||
MapGridSetMetatileIdAt(data[0], data[1], 544);
|
||||
CurrentMapDrawMetatileAt(data[0], data[1]);
|
||||
break;
|
||||
case 20:
|
||||
MapGridSetMetatileIdAt(data[0], data[1], 548);
|
||||
CurrentMapDrawMetatileAt(data[0], data[1]);
|
||||
FieldEffectActiveListRemove(FLDEFF_SECRET_BASE_PC_TURN_ON);
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
data[2]++;
|
||||
}
|
||||
|
||||
void DoSecretBasePCTurnOffEffect(void)
|
||||
{
|
||||
s16 x, y;
|
||||
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||
PlaySE(SE_PC_OFF);
|
||||
|
||||
if (!VarGet(VAR_0x4054))
|
||||
MapGridSetMetatileIdAt(x, y, 3616);
|
||||
else
|
||||
MapGridSetMetatileIdAt(x, y, 3617);
|
||||
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user