diff options
Diffstat (limited to 'arm9/source/main.c')
-rw-r--r-- | arm9/source/main.c | 137 |
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; +} |