123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- (*
- gba_regs.pas 18/06/2006 4.22.49
- ------------------------------------------------------------------------------
- This lib is a raw porting of libgba library for gba (you can find it at
- http://www.devkitpro.org).
-
- As this is a direct port from c, I'm pretty sure that something could not work
- as you expect. I am even more sure that this code could be written better, so
- if you think that I have made some mistakes or you have some better
- implemented functions, let me know [francky74 (at) gmail (dot) com]
- Enjoy!
- Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler
- (http://www.freepascal.org)
-
- Copyright (C) 2006 Francesco Lombardi
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ------------------------------------------------------------------------------
- *)
- unit gba_regs;
- {$i def.inc}
- interface
- uses
- gba_types;
- const
- OAMMem : ^word = pointer($7000000); // Sprites(128), coordinates, size..(total 1Kb)
- VideoBuffer : ^word = pointer($6000000); // Front Display Memory (the screen in mode 3-5)
- SecondBuffer : ^word = pointer($600A000); // Back Display Memory
-
- OAMData : ^word = pointer($6010000); // Sprite data (bitmapped)
- OAMdataTile : ^word = pointer($6010000);
- OAMdataBmp : ^word = pointer($6014000);
- BG_COLORS : ^word = pointer($5000000); // Background Palette(256/16 colors)
- OBJ_COLORS : ^word = pointer($5000200); // Sprite Palette(256/16 colors)
- REG_INTERRUPT : ^dword = pointer($3007FFC);
- REG_DISPCNT : ^dword = pointer($4000000); // Display control mode
- REG_DISPCNT_L : ^word = pointer($4000000);
- REG_DISPCNT_H : ^word = pointer($4000002);
- REG_DISPSTAT : ^word = pointer($4000004);
- {$OPTIMIZATION OFF}
- REG_VCOUNT : ^word = pointer($4000006); // Vertical control sync
- {$OPTIMIZATION ON}
- BGCTRL : ^word = pointer($4000008);
- REG_BG0CNT : ^word = pointer($4000008);
- REG_BG1CNT : ^word = pointer($400000A);
- REG_BG2CNT : ^word = pointer($400000C);
- REG_BG3CNT : ^word = pointer($400000E);
-
- BG_OFFSET : PBgScroll = pointer($4000010);
-
- REG_BG0HOFS : ^word = pointer($4000010);
- REG_BG0VOFS : ^word = pointer($4000012);
- REG_BG1HOFS : ^word = pointer($4000014);
- REG_BG1VOFS : ^word = pointer($4000016);
- REG_BG2HOFS : ^word = pointer($4000018);
- REG_BG2VOFS : ^word = pointer($400001A);
- REG_BG3HOFS : ^word = pointer($400001C);
- REG_BG3VOFS : ^word = pointer($400001E);
- REG_BG2PA : ^word = pointer($4000020);
- REG_BG2PB : ^word = pointer($4000022);
- REG_BG2PC : ^word = pointer($4000024);
- REG_BG2PD : ^word = pointer($4000026);
- REG_BG2X : ^dword = pointer($4000028);
- REG_BG2X_L : ^word = pointer($4000028);
- REG_BG2X_H : ^word = pointer($400002A);
- REG_BG2Y : ^dword = pointer($400002C);
- REG_BG2Y_L : ^word = pointer($400002C);
- REG_BG2Y_H : ^word = pointer($400002E);
- REG_BG3PA : ^word = pointer($4000030);
- REG_BG3PB : ^word = pointer($4000032);
- REG_BG3PC : ^word = pointer($4000034);
- REG_BG3PD : ^word = pointer($4000036);
- REG_BG3X : ^dword = pointer($4000038);
- REG_BG3X_L : ^word = pointer($4000038);
- REG_BG3X_H : ^word = pointer($400003A);
- REG_BG3Y : ^dword = pointer($400003C);
- REG_BG3Y_L : ^word = pointer($400003C);
- REG_BG3Y_H : ^word = pointer($400003E);
- REG_WIN0H : ^word = pointer($4000040);
- REG_WIN1H : ^word = pointer($4000042);
- REG_WIN0V : ^word = pointer($4000044);
- REG_WIN1V : ^word = pointer($4000046);
- REG_WININ : ^word = pointer($4000048);
- REG_WINOUT : ^word = pointer($400004A);
-
- REG_MOSAIC : ^dword = pointer($400004C);
- REG_MOSAIC_L : ^dword = pointer($400004C);
- REG_MOSAIC_H : ^dword = pointer($400004E);
- REG_BLDMOD : ^word = pointer($4000050);
- REG_BLDCNT : ^word = pointer($4000050);
- REG_COLEV : ^word = pointer($4000052);
- REG_BLDALPHA : ^word = pointer($4000052);
- REG_COLEY : ^word = pointer($4000054);
- REG_BLDY : ^word = pointer($4000054);
-
- {$OPTIMIZATION OFF}
- REG_SG10 : ^dword = pointer($4000060);
- REG_SG10_L : ^word = pointer($4000060);
- REG_SG10_H : ^word = pointer($4000062);
- REG_SG11 : ^word = pointer($4000064);
- REG_SG20 : ^word = pointer($4000068);
- REG_SG21 : ^word = pointer($400006C);
- REG_SG30 : ^dword = pointer($4000070);
- REG_SG30_L : ^word = pointer($4000070);
- REG_SG30_H : ^word = pointer($4000072);
- REG_SG31 : ^word = pointer($4000074);
- REG_SG40 : ^word = pointer($4000078);
- REG_SG41 : ^word = pointer($400007C);
- REG_SGCNT0 : ^dword = pointer($4000080);
- REG_SGCNT0_L : ^word = pointer($4000080);
- REG_SGCNT0_H : ^word = pointer($4000082);
- REG_SGCNT1 : ^word = pointer($4000084);
- REG_SGBIAS : ^word = pointer($4000088);
- REG_SGWR0 : ^dword = pointer($4000090);
- REG_SGWR0_L : ^word = pointer($4000090);
- REG_SGWR0_H : ^word = pointer($4000092);
- REG_SGWR1 : ^dword = pointer($4000094);
- REG_SGWR1_L : ^word = pointer($4000094);
- REG_SGWR1_H : ^word = pointer($4000096);
- {$OPTIMIZATION ON}
- REG_SGWR2 : ^dword = pointer($4000098);
- {$OPTIMIZATION OFF}
- REG_SGWR2_L : ^word = pointer($4000098);
- REG_SGWR2_H : ^word = pointer($400009A);
- REG_SGWR3 : ^dword = pointer($400009C);
- REG_SGWR3_L : ^word = pointer($400009C);
- REG_SGWR3_H : ^word = pointer($400009E);
- REG_SGFIF0A : ^dword = pointer($40000A0);
- REG_SGFIFOA_L : ^word = pointer($40000A0);
- REG_SGFIFOA_H : ^word = pointer($40000A2);
- REG_SGFIFOB : ^dword = pointer($40000A4);
- REG_SGFIFOB_L : ^word = pointer($40000A4);
- REG_SGFIFOB_H : ^word = pointer($40000A6);
- {$OPTIMIZATION ON}
- REG_DM0SAD : ^dword = pointer($40000B0);
- REG_DM0SAD_L : ^word = pointer($40000B0);
- REG_DM0SAD_H : ^word = pointer($40000B2);
- REG_DM0DAD : ^dword = pointer($40000B4);
- REG_DM0DAD_L : ^word = pointer($40000B4);
- REG_DM0DAD_H : ^word = pointer($40000B6);
- REG_DM0CNT : ^dword = pointer($40000B8);
- REG_DM0CNT_L : ^word = pointer($40000B8);
- REG_DM0CNT_H : ^word = pointer($40000BA);
- REG_DM1SAD : ^dword = pointer($40000BC);
- REG_DM1SAD_L : ^word = pointer($40000BC);
- REG_DM1SAD_H : ^word = pointer($40000BE);
- REG_DM1DAD : ^dword = pointer($40000C0);
- REG_DM1DAD_L : ^word = pointer($40000C0);
- REG_DM1DAD_H : ^word = pointer($40000C2);
- REG_DM1CNT : ^dword = pointer($40000C4);
- REG_DM1CNT_L : ^word = pointer($40000C4);
- REG_DM1CNT_H : ^word = pointer($40000C6);
- REG_DM2SAD : ^dword = pointer($40000C8);
- REG_DM2SAD_L : ^word = pointer($40000C8);
- REG_DM2SAD_H : ^word = pointer($40000CA);
- REG_DM2DAD : ^dword = pointer($40000CC);
- REG_DM2DAD_L : ^word = pointer($40000CC);
- REG_DM2DAD_H : ^word = pointer($40000CE);
- REG_DM2CNT : ^dword = pointer($40000D0);
- REG_DM2CNT_L : ^word = pointer($40000D0);
- REG_DM2CNT_H : ^word = pointer($40000D2);
- REG_DM3SAD : ^dword = pointer($40000D4);
- REG_DM3SAD_L : ^word = pointer($40000D4);
- REG_DM3SAD_H : ^word = pointer($40000D6);
- REG_DM3DAD : ^dword = pointer($40000D8);
- REG_DM3DAD_L : ^word = pointer($40000D8);
- REG_DM3DAD_H : ^word = pointer($40000DA);
- REG_DM3CNT : ^dword = pointer($40000DC);
- REG_DM3CNT_L : ^word = pointer($40000DC);
- REG_DM3CNT_H : ^word = pointer($40000DE);
-
- {$OPTIMIZATION OFF}
- REG_TM0CNT_L : ^word = pointer($4000100);
- REG_TM0CNT_H : ^word = pointer($4000102);
- REG_TM1CNT_L : ^word = pointer($4000104);
- REG_TM1CNT_H : ^word = pointer($4000106);
- REG_TM2CNT_L : ^word = pointer($4000108);
- REG_TM2CNT_H : ^word = pointer($400010A);
- REG_TM3CNT_L : ^word = pointer($400010C);
- REG_TM3CNT_H : ^word = pointer($400010E);
- {$OPTIMIZATION ON}
- {$OPTIMIZATION OFF}
- REG_SCD0 : ^word = pointer($4000120);
- REG_SCD1 : ^word = pointer($4000122);
- REG_SCD2 : ^word = pointer($4000124);
- REG_SCD3 : ^word = pointer($4000126);
-
- REG_SCCNT : ^dword = pointer($4000128);
- REG_SCCNT_L : ^word = pointer($4000128);
- REG_SIOCNT : ^word = pointer($4000128);
- REG_SCCNT_H : ^word = pointer($400012A);
- REG_SIODATA8 : ^word = pointer($400012A);
- REG_SIODATA32 : ^dword = pointer($4000120);
- REG_SIOMLT_SEND : ^word = pointer($400012A);
- REG_SIOMLT_RECV : ^word = pointer($4000120);
- REG_SIOMULTI0 : ^word = pointer($4000120);
- REG_SIOMULTI1 : ^word = pointer($4000122);
- REG_SIOMULTI2 : ^word = pointer($4000124);
- REG_SIOMULTI3 : ^word = pointer($4000126);
- REG_RCNT : ^word = pointer($4000134);
- REG_P1 : ^word = pointer($4000130);
- REG_KEYINPUT : ^word = pointer($4000130);
- REG_P1CNT : ^word = pointer($4000132);
- REG_KEYCNT : ^word = pointer($4000132);
- REG_R : ^word = pointer($4000134);
-
- {$OPTIMIZATION ON}
- REG_HS_CTRL : ^word = pointer($4000140);
- REG_JOYRE : ^dword = pointer($4000150);
- REG_JOYRE_L : ^word = pointer($4000150);
- REG_JOYRE_H : ^word = pointer($4000152);
- REG_JOYTR : ^dword = pointer($4000154);
- REG_JOYTR_L : ^word = pointer($4000154);
- REG_JOYTR_H : ^word = pointer($4000156);
- REG_JSTAT : ^dword = pointer($4000158);
- REG_JSTAT_L : ^word = pointer($4000158);
- REG_JSTAT_H : ^word = pointer($400015A);
- REG_IE : ^word = pointer($4000200);
- REG_IF : ^word = pointer($4000202);
- REG_WSCNT : ^word = pointer($4000204);
- REG_IME : ^word = pointer($4000208);
- REG_PAUSE : ^word = pointer($4000300);
- BIT0 = 1;
- BIT1 = 2;
- BIT2 = 4;
- BIT3 = 8;
- BIT4 = 16;
- BIT5 = 32;
- BIT6 = 64;
- BIT7 = 128;
- BIT8 = 256;
- BIT9 = 512;
- BIT10 = 1024;
- BIT11 = 2048;
- BIT12 = 4096;
- BIT13 = 8192;
- BIT14 = 16384;
- BIT15 = 32768;
- implementation
- end.
|