mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-06-03 10:25:25 +02:00
byuu says: Added MBC1 emulation, although battery RAM doesn't save or load to disk yet. Made up a fake MBC0 which is really just saying 'no MBC', for consistent handling of all MBCs. Added bumpers to stop ROM/RAM out of bounds accesses. Added STAT interrupts for LY coincidence, Vblank and Hblank (not for OAM access yet, I don't know the timings.) Fixed timer interrupt [Jonas Quinn] Made all interrupts call a CPU function instead of just setting a flag for better control (to allow below addition.) Added HALT and STOP emulation, the latter permanently locks the Game Boy for now. The former breaks on interrupts. Rewrote all the rendering code to suck 50% less, though it's still absolutely miserable and scanline-based. Added pixel-level horizontal scrolling to BGs. Fixed OBJ rendering error that was making them render upside down (I was flipping to compensate before.) Added OBJ 8x16 mode. Added OBJ priority support. Added window (but it's broken to all hell on Mega Man II.)
53 lines
1.1 KiB
C++
Executable File
53 lines
1.1 KiB
C++
Executable File
//bgameboy
|
|
//author: byuu
|
|
//project started: 2010-12-27
|
|
|
|
namespace GameBoy {
|
|
namespace Info {
|
|
static const char Name[] = "bgameboy";
|
|
static const char Version[] = "000.06";
|
|
}
|
|
}
|
|
|
|
#include <libco/libco.h>
|
|
|
|
#include <nall/foreach.hpp>
|
|
#include <nall/property.hpp>
|
|
#include <nall/stdint.hpp>
|
|
#include <nall/string.hpp>
|
|
using namespace nall;
|
|
|
|
namespace GameBoy {
|
|
typedef int8_t int8;
|
|
typedef int16_t int16;
|
|
typedef int32_t int32;
|
|
typedef int64_t int64;
|
|
|
|
typedef uint8_t uint8;
|
|
typedef uint16_t uint16;
|
|
typedef uint32_t uint32;
|
|
typedef uint64_t uint64;
|
|
|
|
struct Processor {
|
|
cothread_t thread;
|
|
unsigned frequency;
|
|
int64 clock;
|
|
|
|
inline void create(void (*entrypoint_)(), unsigned frequency_) {
|
|
if(thread) co_delete(thread);
|
|
thread = co_create(65536 * sizeof(void*), entrypoint_);
|
|
frequency = frequency_;
|
|
clock = 0;
|
|
}
|
|
|
|
inline Processor() : thread(0) {}
|
|
};
|
|
|
|
#include <system/system.hpp>
|
|
#include <scheduler/scheduler.hpp>
|
|
#include <memory/memory.hpp>
|
|
#include <cartridge/cartridge.hpp>
|
|
#include <cpu/cpu.hpp>
|
|
#include <lcd/lcd.hpp>
|
|
};
|