mirror of
https://github.com/Spritetm/minimacplus.git
synced 2024-11-28 04:54:52 +00:00
Sad mac, yay!
This commit is contained in:
parent
ad726c6e80
commit
1dd8ded327
4
Makefile
4
Makefile
@ -2,8 +2,8 @@ TARGET:=tme
|
||||
MUSASHI_GEN_SRC:=musashi/m68kops.c musashi/m68kopac.c musashi/m68kopdm.c musashi/m68kopnz.c
|
||||
OBJ:=$(MUSASHI_GEN_SRC:%.x=%.o) musashi/m68kcpu.o main.o emu.o disp.o
|
||||
#musashi/m68kdasm.o
|
||||
CFLAGS=-Wall -I. -I./musashi -ggdb
|
||||
LDFLAGS=
|
||||
CFLAGS=-Wall -I. -I./musashi -ggdb `sdl2-config --cflags`
|
||||
LDFLAGS=`sdl2-config --libs`
|
||||
|
||||
$(TARGET): $(OBJ)
|
||||
$(CC) -o $(@) $(CFLAGS) $(LDFLAGS) $^
|
||||
|
8
disp.c
8
disp.c
@ -1,6 +1,6 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <SDL/SDL.h>
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
const int SCREEN_WIDTH = 512;
|
||||
const int SCREEN_HEIGHT = 342;
|
||||
@ -25,12 +25,12 @@ void dispInit() {
|
||||
|
||||
void dispDraw(char *mem) {
|
||||
int x, y, z;
|
||||
uint32_t pixels=drwsurf->pixels;
|
||||
SDL_LockSurface(drwsurf);
|
||||
uint32_t *pixels=(uint32_t*)drwsurf->pixels;
|
||||
for (y=0; y<SCREEN_HEIGHT; y++) {
|
||||
for (x=0; x<SCREEN_WIDTH; x+=8) {
|
||||
for (z=1; z!=0x100; z++) {
|
||||
if (*mem&z) *pixels=0xFFFFFF; else *pixels=0;
|
||||
for (z=0x80; z!=0; z>>=1) {
|
||||
if (*mem&z) *pixels=0xFF000000; else *pixels=0xFFFFFFFF;
|
||||
pixels++;
|
||||
}
|
||||
mem++;
|
||||
|
22
emu.c
22
emu.c
@ -17,17 +17,20 @@ int rom_remap;
|
||||
unsigned int m68k_read_memory_8(unsigned int address) {
|
||||
unsigned int ret;
|
||||
unsigned int pc=m68k_get_reg(NULL, M68K_REG_PC);
|
||||
if (rom_remap && address < TME_ROMSIZE) {
|
||||
ret=macRom[address];
|
||||
} else if (address < TME_RAMSIZE) {
|
||||
ret=macRam[address];
|
||||
if (rom_remap && address < 0x400000) {
|
||||
ret=macRom[address & (TME_ROMSIZE-1)];
|
||||
} else if (rom_remap && address > 0x600000 && address <= 0xA00000) {
|
||||
ret=macRam[address & (TME_RAMSIZE-1)];
|
||||
} else if (address < 0x400000) {
|
||||
ret=macRam[address & (TME_RAMSIZE-1)];
|
||||
} else if (address>0x400000 && address<0x41FFFF) {
|
||||
int romAdr=address-0x400000;
|
||||
if (romAdr>TME_ROMSIZE) printf("PC %x:Huh? Read from ROM mirror (%x)\n", pc, address);
|
||||
ret=macRom[romAdr&(TME_ROMSIZE-1)];
|
||||
// rom_remap=0; //HACK
|
||||
} else {
|
||||
printf("PC %x: Read from %x\n", pc, address);
|
||||
ret=0xff;
|
||||
ret=rand();
|
||||
}
|
||||
// printf("Rd %x = %x\n", address, ret);
|
||||
return ret;
|
||||
@ -35,8 +38,10 @@ unsigned int m68k_read_memory_8(unsigned int address) {
|
||||
|
||||
void m68k_write_memory_8(unsigned int address, unsigned int value) {
|
||||
unsigned int pc=m68k_get_reg(NULL, M68K_REG_PC);
|
||||
if (address < TME_RAMSIZE) {
|
||||
macRam[address]=value;
|
||||
if (address < 0x400000) {
|
||||
macRam[address & (TME_RAMSIZE-1)]=value;
|
||||
} else if (rom_remap && address > 0x600000 && address <= 0xA00000) {
|
||||
macRam[address & (TME_RAMSIZE-1)]=value;
|
||||
} else {
|
||||
printf("PC %x: Write to %x: %x\n", pc, address, value);
|
||||
}
|
||||
@ -46,6 +51,7 @@ void m68k_write_memory_8(unsigned int address, unsigned int value) {
|
||||
void tmeStartEmu(void *rom) {
|
||||
macRom=rom;
|
||||
macRam=malloc(TME_RAMSIZE);
|
||||
for (int x=0; x<TME_RAMSIZE; x++) macRam[x]=x;
|
||||
rom_remap=1;
|
||||
m68k_init();
|
||||
m68k_set_cpu_type(M68K_CPU_TYPE_68000);
|
||||
@ -54,6 +60,8 @@ void tmeStartEmu(void *rom) {
|
||||
while(1) {
|
||||
m68k_execute(8000000/60);
|
||||
dispDraw(&macRam[0x1A700]);
|
||||
printf("Int!\n");
|
||||
// m68k_set_irq(2);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user