From 164d55e3e6166ed56c652346c99b30b0c0c7e158 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sat, 30 May 2020 19:14:20 -0400 Subject: money.c: Draw10000Sprite WIP --- include/money.h | 2 +- src/money.c | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/include/money.h b/include/money.h index 43579910c..98f70cc08 100644 --- a/include/money.h +++ b/include/money.h @@ -7,7 +7,7 @@ void RemoveMoney(u32 *, u32); void GetMoneyAmountText(u8 *buffer, u32 arg1, u8 arg2); void PrintMoneyAmount(u32 arg0, u8 arg1, u8 x, u8 y); void sub_80B7AEC(u32, u8 right, u8 top); -void Draw10000Sprite(u8, u8, int); +void Draw10000Sprite(u8, u8, s32); void UpdateMoneyWindow(u32, u8, u8); void OpenMoneyWindow(u32, u8, u8); void CloseMoneyWindow(u8, u8); diff --git a/src/money.c b/src/money.c index 53800f854..bf93f6dd1 100644 --- a/src/money.c +++ b/src/money.c @@ -176,8 +176,32 @@ void sub_80B7AEC(u32 arg0, u8 right, u8 top) #endif } +#ifdef NONMATCHING +void Draw10000Sprite(u8 var1, u8 var2, s32 var3) +{ + // 2D/3D array manipulation off the wazoo. + // Converting to 2D/3D array casts makes it match less! + u16 i; + + CpuFastSet( + (void*)&gDecoration10000_Gfx[var3 * 0x100], + (void*)(VRAM + 0x8000 + (var2 * 0x3c0) + ((var1 + 1) * 0x20)), + 32); + CpuFastSet( + (void*)&gDecoration10000_Gfx[var3 * 0x100 + 0x80], + (void*)(VRAM + 0x8000 + ((var2 + 1) * 0x3c0) + ((var1 + 1) * 0x20)), + 32); + + for (i = 0; i < 4; i++) + { + u32 base = var2 * 0x20 + var1 + i; + ((u16 *)(VRAM + 0xF800))[base] = var2 * 0x1e + 1 + var1 + (u16)-4096; + ((u16 *)(VRAM + 0xF840))[base] = (var2 + 1) * 0x1e + 1 + var1 + (u16)-4096; + }; +} +#else NAKED -void Draw10000Sprite(u8 var1, u8 var2, int var3) +void Draw10000Sprite(u8 var1, u8 var2, s32 var3) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -269,6 +293,7 @@ _080B7BE4: .4byte 0x0600f800\n\ _080B7BE8: .4byte 0x0600f840\n\ .syntax divided\n"); } +#endif void UpdateMoneyWindow(u32 amount, u8 x, u8 y) { -- cgit v1.2.3