summaryrefslogtreecommitdiff
path: root/include/libnds/nds/registers_alt.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libnds/nds/registers_alt.h')
-rw-r--r--include/libnds/nds/registers_alt.h311
1 files changed, 311 insertions, 0 deletions
diff --git a/include/libnds/nds/registers_alt.h b/include/libnds/nds/registers_alt.h
new file mode 100644
index 0000000000..1c9eb33993
--- /dev/null
+++ b/include/libnds/nds/registers_alt.h
@@ -0,0 +1,311 @@
+/*---------------------------------------------------------------------------------
+ Copyright (C) 2005
+ Michael Noland (joat)
+ Jason Rogers (dovoto)
+ Dave Murphy (WinterMute)
+ Chris Double (doublec)
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+---------------------------------------------------------------------------------*/
+
+/*
+ This file should be deprecated.
+
+ All hardware register defines should be replaced with REG_ for consistency and namespacing
+
+ http://forum.gbadev.org/viewtopic.php?t=4993
+
+*/
+#ifndef NDS_REGISTERS_H
+#define NDS_REGISTERS_H
+
+
+#include <nds/jtypes.h>
+
+
+#define REG_DISPCNT (*(vu32*)0x4000000)
+
+#ifdef ARM9
+#define WAIT_CR REG_EXMEMCNT
+#else
+#define WAIT_CR REG_EXMEMSTAT
+#endif
+
+#define DISP_SR REG_DISPSTAT
+#define DISP_Y REG_VCOUNT
+
+#define REG_BGCTRL ( (vu16*)0x4000008)
+#define REG_BG0CNT (*(vu16*)0x4000008)
+#define REG_BG1CNT (*(vu16*)0x400000A)
+#define REG_BG2CNT (*(vu16*)0x400000C)
+#define REG_BG3CNT (*(vu16*)0x400000E)
+
+#define REG_BGOFFSETS ( (vu16*)0x4000010)
+#define REG_BG0HOFS (*(vu16*)0x4000010)
+#define REG_BG0VOFS (*(vu16*)0x4000012)
+#define REG_BG1HOFS (*(vu16*)0x4000014)
+#define REG_BG1VOFS (*(vu16*)0x4000016)
+#define REG_BG2HOFS (*(vu16*)0x4000018)
+#define REG_BG2VOFS (*(vu16*)0x400001A)
+#define REG_BG3HOFS (*(vu16*)0x400001C)
+#define REG_BG3VOFS (*(vu16*)0x400001E)
+
+#define REG_BG2PA (*(vu16*)0x4000020)
+#define REG_BG2PB (*(vu16*)0x4000022)
+#define REG_BG2PC (*(vu16*)0x4000024)
+#define REG_BG2PD (*(vu16*)0x4000026)
+
+#define REG_BG2X (*(vu32*)0x4000028)
+#define REG_BG2X_L (*(vu16*)0x4000028)
+#define REG_BG2X_H (*(vu16*)0x400002A)
+
+#define REG_BG2Y (*(vu32*)0x400002C)
+#define REG_BG2Y_L (*(vu16*)0x400002C)
+#define REG_BG2Y_H (*(vu16*)0x400002E)
+
+#define REG_BG3PA (*(vu16*)0x4000030)
+#define REG_BG3PB (*(vu16*)0x4000032)
+#define REG_BG3PC (*(vu16*)0x4000034)
+#define REG_BG3PD (*(vu16*)0x4000036)
+
+#define REG_BG3X (*(vu32*)0x4000038)
+#define REG_BG3X_L (*(vu16*)0x4000038)
+#define REG_BG3X_H (*(vu16*)0x400003A)
+#define REG_BG3Y (*(vu32*)0x400003C)
+#define REG_BG3Y_L (*(vu16*)0x400003C)
+#define REG_BG3Y_H (*(vu16*)0x400003E)
+
+#define REG_WIN0H (*(vu16*)0x4000040)
+#define REG_WIN1H (*(vu16*)0x4000042)
+#define REG_WIN0V (*(vu16*)0x4000044)
+#define REG_WIN1V (*(vu16*)0x4000046)
+#define REG_WININ (*(vu16*)0x4000048)
+#define REG_WINOUT (*(vu16*)0x400004A)
+
+#define REG_MOSAIC (*(vu32*)0x400004C)
+#define REG_MOSAIC_L (*(vu32*)0x400004C)
+#define REG_MOSAIC_H (*(vu32*)0x400004E)
+
+#define REG_BLDMOD (*(vu16*)0x4000050)
+#define REG_COLV (*(vu16*)0x4000052)
+#define REG_COLY (*(vu16*)0x4000054)
+
+#define SERIAL_CR REG_SPICNT
+#define SERIAL_DATA REG_SPIDATA
+#define SIO_CR REG_SIOCNT
+#define R_CR REG_RCNT
+
+#define DISP_CAPTURE REG_DISPCAPCNT
+
+
+/* secondary screen */
+#define REG_DISPCNT_SUB (*(vu32*)0x4001000)
+#define REG_BGCTRL_SUB ( (vu16*)0x4001008)
+#define REG_BG0CNT_SUB (*(vu16*)0x4001008)
+#define REG_BG1CNT_SUB (*(vu16*)0x400100A)
+#define REG_BG2CNT_SUB (*(vu16*)0x400100C)
+#define REG_BG3CNT_SUB (*(vu16*)0x400100E)
+
+#define REG_BGOFFSETS_SUB ( (vu16*)0x4001010)
+#define REG_BG0HOFS_SUB (*(vu16*)0x4001010)
+#define REG_BG0VOFS_SUB (*(vu16*)0x4001012)
+#define REG_BG1HOFS_SUB (*(vu16*)0x4001014)
+#define REG_BG1VOFS_SUB (*(vu16*)0x4001016)
+#define REG_BG2HOFS_SUB (*(vu16*)0x4001018)
+#define REG_BG2VOFS_SUB (*(vu16*)0x400101A)
+#define REG_BG3HOFS_SUB (*(vu16*)0x400101C)
+#define REG_BG3VOFS_SUB (*(vu16*)0x400101E)
+
+#define REG_BG2PA_SUB (*(vu16*)0x4001020)
+#define REG_BG2PB_SUB (*(vu16*)0x4001022)
+#define REG_BG2PC_SUB (*(vu16*)0x4001024)
+#define REG_BG2PD_SUB (*(vu16*)0x4001026)
+
+#define REG_BG2X_SUB (*(vu32*)0x4001028)
+#define REG_BG2Y_SUB (*(vu32*)0x400102C)
+
+#define REG_BG3PA_SUB (*(vu16*)0x4001030)
+#define REG_BG3PB_SUB (*(vu16*)0x4001032)
+#define REG_BG3PC_SUB (*(vu16*)0x4001034)
+#define REG_BG3PD_SUB (*(vu16*)0x4001036)
+
+#define REG_BG3X_SUB (*(vu32*)0x4001038)
+#define REG_BG3X_L_SUB (*(vu16*)0x4001038)
+#define REG_BG3X_H_SUB (*(vu16*)0x400103A)
+#define REG_BG3Y_SUB (*(vu32*)0x400103C)
+#define REG_BG3Y_L_SUB (*(vu16*)0x400103C)
+#define REG_BG3Y_H_SUB (*(vu16*)0x400103E)
+
+#define REG_WIN0H_SUB (*(vu16*)0x4001040)
+#define REG_WIN1H_SUB (*(vu16*)0x4001042)
+#define REG_WIN0V_SUB (*(vu16*)0x4001044)
+#define REG_WIN1V_SUB (*(vu16*)0x4001046)
+#define REG_WININ_SUB (*(vu16*)0x4001048)
+#define REG_WINOUT_SUB (*(vu16*)0x400104A)
+
+#define REG_MOSAIC_SUB (*(vu32*)0x400104C)
+#define REG_MOSAIC_L_SUB (*(vu32*)0x400104C)
+#define REG_MOSAIC_H_SUB (*(vu32*)0x400104E)
+
+#define REG_BLDMOD_SUB (*(vu16*)0x4001050)
+#define REG_COLV_SUB (*(vu16*)0x4001052)
+#define REG_COLY_SUB (*(vu16*)0x4001054)
+
+/*common*/
+#define REG_DMA ( (vu32*)0x40000B0)
+
+#define REG_DMA0SAD (*(vu32*)0x40000B0)
+#define REG_DMA0SAD_L (*(vu16*)0x40000B0)
+#define REG_DMA0SAD_H (*(vu16*)0x40000B2)
+#define REG_DMA0DAD (*(vu32*)0x40000B4)
+#define REG_DMA0DAD_L (*(vu16*)0x40000B4)
+#define REG_DMA0DAD_H (*(vu16*)0x40000B6)
+#define REG_DMA0CNT (*(vu32*)0x40000B8)
+#define REG_DMA0CNT_L (*(vu16*)0x40000B8)
+#define REG_DMA0CNT_H (*(vu16*)0x40000BA)
+
+#define REG_DMA1SAD (*(vu32*)0x40000BC)
+#define REG_DMA1SAD_L (*(vu16*)0x40000BC)
+#define REG_DMA1SAD_H (*(vu16*)0x40000BE)
+#define REG_DMA1DAD (*(vu32*)0x40000C0)
+#define REG_DMA1DAD_L (*(vu16*)0x40000C0)
+#define REG_DMA1DAD_H (*(vu16*)0x40000C2)
+#define REG_DMA1CNT (*(vu32*)0x40000C4)
+#define REG_DMA1CNT_L (*(vu16*)0x40000C4)
+#define REG_DMA1CNT_H (*(vu16*)0x40000C6)
+
+#define REG_DMA2SAD (*(vu32*)0x40000C8)
+#define REG_DMA2SAD_L (*(vu16*)0x40000C8)
+#define REG_DMA2SAD_H (*(vu16*)0x40000CA)
+#define REG_DMA2DAD (*(vu32*)0x40000CC)
+#define REG_DMA2DAD_L (*(vu16*)0x40000CC)
+#define REG_DMA2DAD_H (*(vu16*)0x40000CE)
+#define REG_DMA2CNT (*(vu32*)0x40000D0)
+#define REG_DMA2CNT_L (*(vu16*)0x40000D0)
+#define REG_DMA2CNT_H (*(vu16*)0x40000D2)
+
+#define REG_DMA3SAD (*(vu32*)0x40000D4)
+#define REG_DMA3SAD_L (*(vu16*)0x40000D4)
+#define REG_DMA3SAD_H (*(vu16*)0x40000D6)
+#define REG_DMA3DAD (*(vu32*)0x40000D8)
+#define REG_DMA3DAD_L (*(vu16*)0x40000D8)
+#define REG_DMA3DAD_H (*(vu16*)0x40000DA)
+#define REG_DMA3CNT (*(vu32*)0x40000DC)
+#define REG_DMA3CNT_L (*(vu16*)0x40000DC)
+#define REG_DMA3CNT_H (*(vu16*)0x40000DE)
+
+#define REG_TIME ( (vu16*)0x4000100)
+#define REG_TM0D (*(vu16*)0x4000100)
+#define REG_TM0CNT (*(vu16*)0x4000102)
+#define REG_TM1D (*(vu16*)0x4000106)
+#define REG_TM2D (*(vu16*)0x4000108)
+#define REG_TM2CNT (*(vu16*)0x400010A)
+#define REG_TM3D (*(vu16*)0x400010C)
+#define REG_TM3CNT (*(vu16*)0x400010E)
+
+
+#define REG_SIOCNT (*(vu16*)0x4000128)
+#define REG_SIOMLT_SEND (*(vu16*)0x400012A)
+
+#define KEYS REG_KEYINPUT
+#define KEYS_CR REG_KEYCNT
+//???
+#define REG_RCNT (*(vu16*)0x4000134)
+#define REG_HS_CTRL (*(vu16*)0x4000140)
+
+/* Interupt enable registers */
+#define IE REG_IE
+#define IF REG_IF
+#define IME REG_IME
+
+/*controls power 0x30f is all on */
+#define POWER_CR REG_POWERCNT
+
+/* ram controllers 0x8 is enabled, other bits have to do with mapping */
+#define REG_VRAM_A_CR (*(vu8*) 0x4000240)
+#define REG_VRAM_B_CR (*(vu8*) 0x4000241)
+#define REG_VRAM_C_CR (*(vu8*) 0x4000242)
+#define REG_VRAM_D_CR (*(vu8*) 0x4000243)
+#define REG_VRAM_E_CR (*(vu8*) 0x4000244)
+#define REG_VRAM_F_CR (*(vu8*) 0x4000245)
+#define REG_VRAM_G_CR (*(vu8*) 0x4000246)
+#define REG_VRAM_H_CR (*(vu8*) 0x4000248)
+#define REG_VRAM_I_CR (*(vu8*) 0x4000249)
+#define REG_WRAM_CNT (*(vu8*) 0x4000247)
+
+
+
+
+/*3D graphics suff*/
+#define REG_GFX_FIFO (*(vu32*) 0x4000400)
+#define REG_GFX_STATUS (*(vu32*) 0x4000600)
+#define REG_GFX_CONTROL (*(vu16*) 0x4000060)
+#define REG_COLOR (*(vu32*) 0x4000480)
+#define REG_VERTEX16 (*(vu32*) 0x400048C)
+#define REG_TEXT_COORD (*(vu32*) 0x4000488)
+#define REG_TEXT_FORMAT (*(vu32*) 0x40004A8)
+
+
+#define REG_CLEAR_COLOR (*(vu32*) 0x4000350)
+#define REG_CLEAR_DEPTH (*(vu16*) 0x4000354)
+
+#define REG_LIGHT_VECTOR (*(vu32*) 0x40004C8)
+#define REG_LIGHT_COLOR (*(vu32*) 0x40004CC)
+#define REG_NORMAL (*(vu32*) 0x4000484)
+
+#define REG_DIFFUSE_AMBIENT (*(vu32*) 0x40004C0)
+#define REG_SPECULAR_EMISSION (*(vu32*) 0x40004C4)
+#define REG_SHININESS (*(vu32*) 0x40004D0)
+
+#define REG_POLY_FORMAT (*(vu32*) 0x40004A4)
+
+#define REG_GFX_BEGIN (*(vu32*) 0x4000500)
+#define REG_GFX_END (*(vu32*) 0x4000504)
+#define REG_GFX_FLUSH (*(vu32*) 0x4000540)
+#define REG_GFX_VIEWPORT (*(vu32*) 0x4000580)
+
+#define REG_MTX_CONTROL (*(vu32*) 0x4000440)
+#define REG_MTX_PUSH (*(vu32*) 0x4000444)
+#define REG_MTX_POP (*(vu32*) 0x4000448)
+#define REG_MTX_SCALE (*(vint32*) 0x400046C)
+#define REG_MTX_TRANSLATE (*(vint32*) 0x4000470)
+#define REG_MTX_RESTORE (*(vu32*) 0x4000450)
+#define REG_MTX_STORE (*(vu32*) 0x400044C)
+#define REG_MTX_IDENTITY (*(vu32*) 0x4000454)
+#define REG_MTX_LOAD4x4 (*(volatile f32*) 0x4000458)
+#define REG_MTX_LOAD4x3 (*(volatile f32*) 0x400045C)
+#define REG_MTX_MULT4x4 (*(volatile f32*) 0x4000460)
+#define REG_MTX_MULT4x3 (*(volatile f32*) 0x4000464)
+#define REG_MTX_MULT3x3 (*(volatile f32*) 0x4000468)
+
+// Card bus
+
+#define REG_CARD_CR1 (*(vu32*)0x040001A0)
+#define REG_CARD_CR1H (*(vu8*)0x040001A1)
+#define REG_CARD_CR2 (*(vu32*)0x040001A4)
+#define REG_CARD_COMMAND ((vu8*)0x040001A8)
+
+#define REG_CARD_DATA (*(vu32*)0x04100000)
+#define REG_CARD_DATA_RD (*(vu32*)0x04100010)
+
+#define REG_CARD_1B0 (*(vu32*)0x040001B0)
+#define REG_CARD_1B4 (*(vu32*)0x040001B4)
+#define REG_CARD_1B8 (*(vu16*)0x040001B8)
+#define REG_CARD_1BA (*(vu16*)0x040001BA)
+#endif