summaryrefslogtreecommitdiff
path: root/arm9/source/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/source/main.c')
-rw-r--r--arm9/source/main.c137
1 files changed, 137 insertions, 0 deletions
diff --git a/arm9/source/main.c b/arm9/source/main.c
new file mode 100644
index 0000000..a5f5035
--- /dev/null
+++ b/arm9/source/main.c
@@ -0,0 +1,137 @@
+/*
+ ds81 - Nintendo DS ZX81 emulator.
+
+ Copyright (C) 2006 Ian Cowburn
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ $Id$
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <nds.h>
+
+#include "framebuffer.h"
+#include "gui.h"
+
+#include "splashimg_bin.h"
+
+/* ---------------------------------------- STATIC DATA
+*/
+
+
+/* ---------------------------------------- DISPLAY FUNCS
+*/
+static void VBlankFunc(void)
+{
+ scanKeys();
+}
+
+static void Splash(void)
+{
+ static const char *text[]=
+ {
+ "DS81 \177 2006 Ian C",
+ " ",
+ "ZX81 ROM \177 1981",
+ "Nine Tiles Networks LTD",
+ " ",
+ "3D MONSTER MAZE \177 1983",
+ "Malcom E. Evans",
+ " ",
+ "PRESS A TO CONTINUE",
+ " ",
+ " ",
+ "http://www.noddybox.co.uk/",
+ NULL
+ };
+
+ sImage img;
+ int f;
+
+ loadPCX(splashimg_bin,&img);
+ image8to16(&img);
+ dmaCopy(img.data8,BG_GFX,SCREEN_WIDTH*SCREEN_HEIGHT*2);
+
+ FB_Clear();
+
+ for(f=0;f<SCREEN_HEIGHT;f++)
+ {
+ FB_HLine(0,SCREEN_WIDTH-1,f,FB_RGB(f/8,0,0));
+ }
+
+ FB_Box(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,FB_RGB(31,31,31));
+
+ for(f=0;text[f];f++)
+ {
+ FB_Centre(text[f],40+f*8,FB_RGB(31,31,31),-1);
+ }
+
+ while(!(keysDown() & KEY_A))
+ {
+ swiWaitForVBlank();
+ }
+}
+
+
+/* ---------------------------------------- MAIN
+*/
+int main(int argc, char *argv[])
+{
+ powerON(POWER_ALL_2D);
+
+ videoSetMode(MODE_5_2D | DISPLAY_BG2_ACTIVE);
+
+ vramSetBankA(VRAM_A_MAIN_BG_0x6000000);
+ BG2_CR = BG_BMP16_256x256;
+ BG2_XDX = 0x100;
+ BG2_XDY = 0;
+ BG2_YDX = 0;
+ BG2_YDY = 0x100;
+ BG2_CX = 0;
+ BG2_CY = 0;
+
+ videoSetModeSub(MODE_5_2D | DISPLAY_BG2_ACTIVE);
+
+ vramSetBankC(VRAM_C_SUB_BG_0x6200000);
+ SUB_BG2_CR = BG_BMP16_256x256;
+ SUB_BG2_XDX = 0x100;
+ SUB_BG2_XDY = 0;
+ SUB_BG2_YDX = 0;
+ SUB_BG2_YDY = 0x100;
+ SUB_BG2_CX = 0;
+ SUB_BG2_CY = 0;
+
+ irqInit();
+ irqSet(IRQ_VBLANK,VBlankFunc);
+
+ keysSetRepeat(30,15);
+
+ FB_Init(BG_GFX_SUB);
+
+ Splash();
+
+ while(1)
+ {
+ static const char *menu[]={"Option #1","A longer option","Short","Wibble Sticks!",NULL};
+ char buff[32];
+
+ sprintf(buff,"sel=%d",GUI_Menu(menu));
+ FB_Centre(buff,SCREEN_HEIGHT-10,FB_RGB(31,31,31),FB_RGB(0,0,15));
+ }
+
+ return 0;
+}