- [FIX] Les interrupcions no se deshabilitaven

- [NEW] Botons implementats
This commit is contained in:
2025-01-20 13:37:28 +01:00
parent 036ab23173
commit 3e0de299b4
2 changed files with 26 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
#include "mbc_none.h"
#include "mem.h"
#include <stdlib.h>
#include <SDL2/SDL.h>
namespace mbc_none
{
@@ -13,6 +14,26 @@ namespace mbc_none
uint8_t tags[65536];
uint8_t getKeypad(uint8_t value)
{
const uint8_t *keys = SDL_GetKeyboardState(NULL);
value = value & 0xf0;
if (value & 0x10) {
if (!keys[SDL_SCANCODE_RETURN]) value = value | 0x8;
if (!keys[SDL_SCANCODE_SPACE]) value = value | 0x4;
if (!keys[SDL_SCANCODE_Z]) value = value | 0x2;
if (!keys[SDL_SCANCODE_X]) value = value | 0x1;
} else if (value & 0x20) {
if (!keys[SDL_SCANCODE_DOWN]) value = value | 0x8;
if (!keys[SDL_SCANCODE_UP]) value = value | 0x4;
if (!keys[SDL_SCANCODE_LEFT]) value = value | 0x2;
if (!keys[SDL_SCANCODE_RIGHT]) value = value | 0x1;
} else {
value = value | 0x0f;
}
return value;
}
uint8_t readMem(uint16_t address)
{
if (address < 0x8000) {
@@ -27,6 +48,9 @@ namespace mbc_none
} else if (address < 0xFE00) {
return wram[address - 0xE000];
} else {
if (address==0xFF00) {
hram[address - 0XFE00] = getKeypad(hram[address - 0XFE00]);
}
return hram[address - 0XFE00];
}
}
@@ -46,6 +70,7 @@ namespace mbc_none
wram[address - 0xE000] = value;
} else {
if ( (address==0xFF50) && ((value&0x01) != 1) ) return; //Only allow disabling boot room
if ( (address==0xFF00) ) { value = value & 0x30; }
hram[address - 0xFE00] = value;
}
}