mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-02-18 20:37:50 +00:00
Port scrcmd_items from pokediamond
This commit is contained in:
parent
7ac9326cda
commit
f225f83c5d
@ -226,7 +226,7 @@ gScriptCmdTable:
|
||||
.word ScrCmd_SetVar ; 041
|
||||
.word ScrCmd_CopyVar ; 042
|
||||
.word ScrCmd_SetOrCopyVar ; 043
|
||||
.word ScrCmd_Message ; 044
|
||||
.word ScrCmd_Message ; 044
|
||||
.word ScrCmd_045 ; 045
|
||||
.word ScrCmd_046 ; 046
|
||||
.word ScrCmd_047 ; 047
|
||||
@ -307,12 +307,12 @@ gScriptCmdTable:
|
||||
.word ScrCmd_122 ; 122
|
||||
.word ScrCmd_123 ; 123
|
||||
.word ScrCmd_124 ; 124
|
||||
.word ScrCmd_125 ; 125
|
||||
.word ScrCmd_126 ; 126
|
||||
.word ScrCmd_127 ; 127
|
||||
.word ScrCmd_128 ; 128
|
||||
.word ScrCmd_129 ; 129
|
||||
.word ScrCmd_130 ; 130
|
||||
.word ScrCmd_GiveItem ; 125
|
||||
.word ScrCmd_TakeItem ; 126
|
||||
.word ScrCmd_HasSpaceForItem ; 127
|
||||
.word ScrCmd_HasItem ; 128
|
||||
.word ScrCmd_ItemIsTMOrHM ; 129
|
||||
.word ScrCmd_GetItemPocket ; 130
|
||||
.word ScrCmd_131 ; 131
|
||||
.word ScrCmd_132 ; 132
|
||||
.word ScrCmd_133 ; 133
|
||||
@ -851,7 +851,7 @@ gScriptCmdTable:
|
||||
.word ScrCmd_666 ; 666
|
||||
.word ScrCmd_667 ; 667
|
||||
.word ScrCmd_668 ; 668
|
||||
.word ScrCmd_669 ; 669
|
||||
.word ScrCmd_GetItemQuantity ; 669
|
||||
.word ScrCmd_670 ; 670
|
||||
.word ScrCmd_671 ; 671
|
||||
.word ScrCmd_672 ; 672
|
||||
|
248
asm/scrcmd_18.s
248
asm/scrcmd_18.s
@ -1,248 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ScrCmd_125
|
||||
ScrCmd_125: ; 0x0204E9D8
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r4, r0, #0
|
||||
add r1, r4, #0
|
||||
add r1, #0x80
|
||||
ldr r5, [r1]
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r7, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0
|
||||
ldr r0, [r5, #0xc]
|
||||
bl Sav2_Bag_get
|
||||
add r1, r6, #0
|
||||
add r2, r7, #0
|
||||
mov r3, #4
|
||||
bl Bag_AddItem
|
||||
strh r0, [r4]
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end ScrCmd_125
|
||||
|
||||
thumb_func_start ScrCmd_126
|
||||
ScrCmd_126: ; 0x0204EA30
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r4, r0, #0
|
||||
add r1, r4, #0
|
||||
add r1, #0x80
|
||||
ldr r5, [r1]
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r7, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0
|
||||
ldr r0, [r5, #0xc]
|
||||
bl Sav2_Bag_get
|
||||
add r1, r6, #0
|
||||
add r2, r7, #0
|
||||
mov r3, #4
|
||||
bl Bag_TakeItem
|
||||
strh r0, [r4]
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end ScrCmd_126
|
||||
|
||||
thumb_func_start ScrCmd_127
|
||||
ScrCmd_127: ; 0x0204EA88
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r4, r0, #0
|
||||
add r1, r4, #0
|
||||
add r1, #0x80
|
||||
ldr r5, [r1]
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r7, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0
|
||||
ldr r0, [r5, #0xc]
|
||||
bl Sav2_Bag_get
|
||||
add r1, r6, #0
|
||||
add r2, r7, #0
|
||||
mov r3, #4
|
||||
bl Bag_HasSpaceForItem
|
||||
strh r0, [r4]
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end ScrCmd_127
|
||||
|
||||
thumb_func_start ScrCmd_128
|
||||
ScrCmd_128: ; 0x0204EAE0
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r4, r0, #0
|
||||
add r1, r4, #0
|
||||
add r1, #0x80
|
||||
ldr r5, [r1]
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r7, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0
|
||||
ldr r0, [r5, #0xc]
|
||||
bl Sav2_Bag_get
|
||||
add r1, r6, #0
|
||||
add r2, r7, #0
|
||||
mov r3, #0xb
|
||||
bl Bag_HasItem
|
||||
strh r0, [r4]
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end ScrCmd_128
|
||||
|
||||
thumb_func_start ScrCmd_669
|
||||
ScrCmd_669: ; 0x0204EB38
|
||||
push {r4, r5, r6, lr}
|
||||
add r4, r0, #0
|
||||
add r1, r4, #0
|
||||
add r1, #0x80
|
||||
ldr r5, [r1]
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0
|
||||
ldr r0, [r5, #0xc]
|
||||
bl Sav2_Bag_get
|
||||
add r1, r6, #0
|
||||
mov r2, #0xb
|
||||
bl Bag_GetQuantity
|
||||
strh r0, [r4]
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end ScrCmd_669
|
||||
|
||||
thumb_func_start ScrCmd_129
|
||||
ScrCmd_129: ; 0x0204EB7C
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r5, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r4, r0, #0
|
||||
add r0, r5, #0
|
||||
bl ScriptReadHalfword
|
||||
add r5, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r5]
|
||||
bl GetVarPointer
|
||||
add r5, r0, #0
|
||||
add r0, r4, #0
|
||||
bl sub_0205BBB8
|
||||
strh r0, [r5]
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end ScrCmd_129
|
||||
|
||||
thumb_func_start ScrCmd_130
|
||||
ScrCmd_130: ; 0x0204EBB0
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r5, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r4, r0, #0
|
||||
add r0, r5, #0
|
||||
bl ScriptReadHalfword
|
||||
add r5, #0x80
|
||||
add r1, r0, #0
|
||||
ldr r0, [r5]
|
||||
bl GetVarPointer
|
||||
add r5, r0, #0
|
||||
add r0, r4, #0
|
||||
mov r1, #5
|
||||
mov r2, #0xb
|
||||
bl GetItemAttr
|
||||
strh r0, [r5]
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end ScrCmd_130
|
@ -86,8 +86,8 @@ _0205BBB0: .word 0x00989680
|
||||
_0205BBB4: .word 0x05F5E100
|
||||
thumb_func_end sub_0205BB1C
|
||||
|
||||
thumb_func_start sub_0205BBB8
|
||||
sub_0205BBB8: ; 0x0205BBB8
|
||||
thumb_func_start ItemIsTMOrHM
|
||||
ItemIsTMOrHM: ; 0x0205BBB8
|
||||
mov r1, #0x52
|
||||
lsl r1, r1, #2
|
||||
cmp r0, r1
|
||||
@ -101,7 +101,7 @@ _0205BBCA:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_0205BBB8
|
||||
thumb_func_end ItemIsTMOrHM
|
||||
|
||||
thumb_func_start sub_0205BBD0
|
||||
sub_0205BBD0: ; 0x0205BBD0
|
||||
|
16
global.inc
16
global.inc
@ -1808,12 +1808,12 @@
|
||||
.public ScrCmd_122
|
||||
.public ScrCmd_123
|
||||
.public ScrCmd_124
|
||||
.public ScrCmd_125
|
||||
.public ScrCmd_126
|
||||
.public ScrCmd_127
|
||||
.public ScrCmd_128
|
||||
.public ScrCmd_129
|
||||
.public ScrCmd_130
|
||||
.public ScrCmd_GiveItem
|
||||
.public ScrCmd_TakeItem
|
||||
.public ScrCmd_HasSpaceForItem
|
||||
.public ScrCmd_HasItem
|
||||
.public ScrCmd_ItemIsTMOrHM
|
||||
.public ScrCmd_GetItemPocket
|
||||
.public ScrCmd_131
|
||||
.public ScrCmd_132
|
||||
.public ScrCmd_133
|
||||
@ -2349,7 +2349,7 @@
|
||||
.public ScrCmd_666
|
||||
.public ScrCmd_667
|
||||
.public ScrCmd_668
|
||||
.public ScrCmd_669
|
||||
.public ScrCmd_GetItemQuantity
|
||||
.public ScrCmd_670
|
||||
.public ScrCmd_671
|
||||
.public ScrCmd_672
|
||||
@ -28680,7 +28680,7 @@
|
||||
.public sub_0205BAF8
|
||||
.public sub_0205BB04
|
||||
.public sub_0205BB1C
|
||||
.public sub_0205BBB8
|
||||
.public ItemIsTMOrHM
|
||||
.public sub_0205BBD0
|
||||
.public sub_0205BC78
|
||||
.public sub_0205BD20
|
||||
|
21
include/scrcmd.h
Normal file
21
include/scrcmd.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef POKEHEARTGOLD_SCRCMD_H
|
||||
#define POKEHEARTGOLD_SCRCMD_H
|
||||
|
||||
#include "fieldmap.h"
|
||||
#include "script.h"
|
||||
|
||||
// scrcmd_fossils.c
|
||||
BOOL ScrCmd_CountFossils(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_GetFossilPokemon(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_GetFossilMinimumAmount(SCRIPTCONTEXT* ctx);
|
||||
|
||||
// scrcmd_items.c
|
||||
BOOL ScrCmd_GiveItem(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_TakeItem(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_HasSpaceForItem(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_HasItem(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_GetItemQuantity(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_ItemIsTMOrHM(SCRIPTCONTEXT* ctx);
|
||||
BOOL ScrCmd_GetItemPocket(SCRIPTCONTEXT* ctx);
|
||||
|
||||
#endif
|
2
main.lsf
2
main.lsf
@ -169,7 +169,7 @@ Static main
|
||||
Object scrcmd_15.o
|
||||
Object scrcmd_16.o
|
||||
Object scrcmd_17.o
|
||||
Object scrcmd_18.o
|
||||
Object scrcmd_items.o
|
||||
Object scrcmd_19.o
|
||||
Object scrcmd_20.o
|
||||
Object unk_0204F500.o
|
||||
|
@ -28,7 +28,7 @@ BOOL ScrCmd_CountFossils(SCRIPTCONTEXT* ctx) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_GetFossilPokemon(SCRIPTCONTEXT* ctx) {
|
||||
BOOL ScrCmd_GetFossilPokemon(SCRIPTCONTEXT* ctx) {
|
||||
u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 fossil_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
@ -54,11 +54,9 @@ BOOL ScrCmd_GetFossilMinimumAmount(SCRIPTCONTEXT* ctx) {
|
||||
|
||||
u8 i;
|
||||
u16 total;
|
||||
for (i = 0, total = 0; i < NELEMS(sFossilPokemonMap); i++)
|
||||
{
|
||||
for (i = 0, total = 0; i < NELEMS(sFossilPokemonMap); i++) {
|
||||
total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->savedata), sFossilPokemonMap[i][0], 4);
|
||||
if (total >= needed_amount)
|
||||
{
|
||||
if (total >= needed_amount) {
|
||||
*ret_ptr1 = sFossilPokemonMap[i][0];
|
||||
*ret_ptr2 = i;
|
||||
break;
|
||||
|
82
src/scrcmd_items.c
Normal file
82
src/scrcmd_items.c
Normal file
@ -0,0 +1,82 @@
|
||||
#include "scrcmd.h"
|
||||
#include "bag.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
extern BOOL ItemIsTMOrHM(u16 item_id);
|
||||
|
||||
BOOL ScrCmd_GiveItem(SCRIPTCONTEXT* ctx) {
|
||||
UnkSavStruct80* sav_ptr = ctx->unk80;
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BAG_DATA* bag = Sav2_Bag_get(sav_ptr->savedata);
|
||||
*ret_ptr = Bag_AddItem(bag, item_id, quantity, 4);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_TakeItem(SCRIPTCONTEXT* ctx) {
|
||||
UnkSavStruct80* sav_ptr = ctx->unk80;
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BAG_DATA* bag = Sav2_Bag_get(sav_ptr->savedata);
|
||||
*ret_ptr = Bag_TakeItem(bag, item_id, quantity, 4);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_HasSpaceForItem(SCRIPTCONTEXT* ctx) {
|
||||
UnkSavStruct80* sav_ptr = ctx->unk80;
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BAG_DATA* bag = Sav2_Bag_get(sav_ptr->savedata);
|
||||
*ret_ptr = Bag_HasSpaceForItem(bag, item_id, quantity, 4);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_HasItem(SCRIPTCONTEXT* ctx) {
|
||||
UnkSavStruct80* sav_ptr = ctx->unk80;
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BAG_DATA* bag = Sav2_Bag_get(sav_ptr->savedata);
|
||||
*ret_ptr = Bag_HasItem(bag, item_id, quantity, 11);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_GetItemQuantity(SCRIPTCONTEXT* ctx) {
|
||||
UnkSavStruct80* sav_ptr = ctx->unk80;
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BAG_DATA* bag = Sav2_Bag_get(sav_ptr->savedata);
|
||||
*ret_ptr = Bag_GetQuantity(bag, item_id, 11);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_ItemIsTMOrHM(SCRIPTCONTEXT* ctx) {
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
*ret_ptr = ItemIsTMOrHM(item_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_GetItemPocket(SCRIPTCONTEXT* ctx) {
|
||||
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
*ret_ptr = GetItemAttr(item_id, ITEMATTR_FIELD_POCKET, 11);
|
||||
|
||||
return FALSE;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user