diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-10-22 18:47:06 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-10-22 18:47:06 +0200 |
commit | f77dcef59d1b7d84b4e6ae87eaaf7830807bde1c (patch) | |
tree | 4f72969d594c374935bcca628397f0e0fefb19b4 /include | |
parent | df4e32a307c17163e9a64e5ea615ab9eb18afc4b (diff) | |
parent | 1bab62e1cd127e5e01adf839f1d74c5e59ce16bb (diff) |
Merge branch 'master' into decompile_battle_controllers
Diffstat (limited to 'include')
-rw-r--r-- | include/gba/io_reg.h | 6 | ||||
-rw-r--r-- | include/gba/macro.h | 10 | ||||
-rw-r--r-- | include/librfu.h | 108 | ||||
-rw-r--r-- | include/menu.h | 2 |
4 files changed, 126 insertions, 0 deletions
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index a2be31975..f86f2434c 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -137,6 +137,8 @@ #define REG_OFFSET_DMA3CNT_H 0xde #define REG_OFFSET_TMCNT 0x100 +#define REG_OFFSET_TMCNT_L 0x100 +#define REG_OFFSET_TMCNT_H 0x102 #define REG_OFFSET_TM0CNT 0x100 #define REG_OFFSET_TM0CNT_L 0x100 #define REG_OFFSET_TM0CNT_H 0x102 @@ -298,6 +300,8 @@ #define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H) #define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT) +#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L) +#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H) #define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT) #define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L) #define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H) @@ -458,6 +462,8 @@ #define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H) #define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4))) +#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4))) +#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4))) #define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT) #define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L) #define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H) diff --git a/include/gba/macro.h b/include/gba/macro.h index 0217898e8..7b6b98c06 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -86,4 +86,14 @@ dmaRegs[5]; \ } +#define IntrEnable(flags) \ +{ \ + u16 imeTemp; \ + \ + imeTemp = REG_IME; \ + REG_IME = 0; \ + REG_IE |= flags; \ + REG_IME = imeTemp; \ +} \ + #endif // GUARD_GBA_MACRO_H diff --git a/include/librfu.h b/include/librfu.h new file mode 100644 index 000000000..dbc8a41a6 --- /dev/null +++ b/include/librfu.h @@ -0,0 +1,108 @@ +#include "main.h" + +enum +{ + RFU_RESET = 0x10, + RFU_LINK_STATUS, + RFU_VERSION_STATUS, + RFU_SYSTEM_STATUS, + RFU_SLOT_STATUS, + RFU_CONFIG_STATUS, + RFU_GAME_CONFIG, + RFU_SYSTEM_CONFIG, + RFU_UNK18, + RFU_SC_START, + RFU_SC_POLLING, + RFU_SC_END, + RFU_SP_START, + RFU_SP_POLLING, + RFU_SP_END, + RFU_CP_START, + RFU_CP_POLLING, + RFU_CP_END, + RFU_UNK22, + RFU_UNK23, + RFU_DATA_TX, + RFU_DATA_TX_AND_CHANGE, + RFU_DATA_RX, + RFU_MS_CHANGE, + RFU_DATA_READY_AND_CHANGE, + RFU_DISCONNECTED_AND_CHANGE, + RFU_UNK2A, + RFU_UNK2B, + RFU_UNK2C, + RFU_UNK2D, + RFU_UNK2E, + RFU_UNK2F, + RFU_DISCONNECT, + RFU_TEST_MODE, + RFU_CPR_START, + RFU_CPR_POLLING, + RFU_CPR_END, + RFU_UNK35, + RFU_UNK36, + RFU_RESUME_RETRANSMIT_AND_CHANGE, + RFU_UNK38, + RFU_UNK39, + RFU_UNK3A, + RFU_UNK3B, + RFU_UNK3C, + RFU_STOP_MODE, //3D +}; + +struct RfuPacket8 +{ + u8 data[0x74]; +}; + +struct RfuPacket32 +{ + u32 command; + u32 data[0x1C]; +}; + +union RfuPacket +{ + struct RfuPacket32 rfuPacket32; + struct RfuPacket8 rfuPacket8; +}; + +struct RfuStruct +{ + vs32 unk_0; + u8 txParams; + u8 unk_5; + u8 activeCommand; + u8 unk_7; + u8 unk_8; + u8 unk_9; + u8 timerSelect; + u8 unk_b; + int timerState; + vu8 timerActive; + u8 unk_11; + vu16 unk_12; + vu8 msMode; + u8 unk_15; + u8 unk_16; + u8 unk_17; + void (*callbackM)(); + void (*callbackS)(); + u32 callbackID; + union RfuPacket *txPacket; + union RfuPacket *rxPacket; + vu8 unk_2c; + u8 padding[3]; +}; + +struct RfuIntrStruct +{ + u8 rxPacketAlloc[0x74]; + u8 txPacketAlloc[0x74]; + u8 block1[0x960]; + u8 block2[0x30]; +}; + +extern struct RfuStruct *gRfuState; + +void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); diff --git a/include/menu.h b/include/menu.h index 480ffd1ce..ce653274c 100644 --- a/include/menu.h +++ b/include/menu.h @@ -23,5 +23,7 @@ void reset_temp_tile_data_buffers(void); int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd +void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); +s8 sub_8198C58(void); #endif // GUARD_MENU_H |