123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include "data.h";
- #include "pad.h";
- #include "event.h";
- #include "myEvents.h";
- #include "ressource.h";
- #include "PPU.h"
- #include "debug.h"
- #include "integer.h"
- typedef void (*FUNC) (void);
- padStatus pad1;
- void initInternalRegisters(void)
- {
- characterLocation[0] = 0x0000;
- characterLocation[1] = 0x0000;
- characterLocation[2] = 0x0000;
- characterLocation[3] = 0x0000;
- debug_init();
- }
- void preInit(void)
- {
- // For testing purpose ...
- // Insert code here to be executed before register init
- }
- void halt(void)
- {
- while (1);
- }
- void wait(void)
- {
- printfc("SNES::wait: press A to continue\n");
- enablePad();
- pad1 = readPad((byte) 0);
- while (!pad1.A) {
- waitForVBlank();
- pad1 = readPad((byte) 0);
- }
- printfc("SNES::wait: done\n");
- }
- void boot(DWORD addr)
- {
- FUNC fn;
- //printfc("SNES::boot addr=%lx\n", addr);
- fn = (FUNC) addr;
- fn();
- }
- void main(void)
- {
- unsigned char i,j;
- unsigned long addr;
- initInternalRegisters();
- *(byte *) 0x2105 = 0x01; // MODE 1 value
- *(byte *) 0x212c = 0x01; // Plane 0 (bit one) enable register
- *(byte *) 0x212d = 0x00; // All subPlane disable
- *(byte *) 0x2100 = 0x0f; // enable background
- debug_enable();
- #if 0
- addr = 0x008000;
- for (i=0;i<28;i++){
- printfs(i,"ROW %02i %02X %08li %06lX",i,i,addr,addr);
- printfc("ROW %02i %02X %08li %06lX\n",i,i,addr,addr);
- addr += 0x10000;
- }
- #endif
- #define START_ADDR 0x020000
- #define END_ADDR 0x7f2000
- addr = 0x000000;
- i=0;
- j=0;
- for (addr=START_ADDR; addr < END_ADDR; addr+=0x1000){
- if (addr > START_ADDR && addr%0x2000==0){
- //printfc("hit %06lx\n",addr);
- addr += 0x10000 - 0x2000;
- j++;
- if (j>26)
- j=0;
- }
- i++;
- printfc("fill mem=%06lx tag=%02x tag=%i \n", addr, i, i);
- *(byte *) (addr) = i;
- }
- i=0;
- j=0;
- for (addr=START_ADDR; addr < END_ADDR; addr+=0x1000){
- if (addr > START_ADDR && addr%0x2000==0){
- addr += 0x10000 - 0x2000;
- i++;
- j++;
- if (j>26)
- j=0;
- }
- printfs(j,"DUMP %06lX ",addr);
- printc_packet(addr,16,(byte *) (addr));
- }
-
-
- while (1) {
- wait();
- }
- }
- void IRQHandler(void)
- {
- }
- void NMIHandler(void)
- {
- // processEvents();
- }
|