ぴゅう太RAM&ROMカートリッジというのを作ってまして、
http://www.geocities.jp/parallel_computer_inc/cart.html
TINY BASICやら、
https://tms9918.hatenablog.com/entry/2017/02/04/182833
PITFALL!やら、
https://tms9918.hatenablog.com/entry/2017/03/05/114050
TI SCRAMBLEやら、
https://tms9918.hatenablog.com/entry/2017/04/15/101627
DOOR DOORが遊べるようになります。
https://www.youtube.com/watch?v=MIoiBIzAjyk
しかしエミュレータが対応していませんので、ePyuTa 謎WIPページの修正点をメモしておこうと思います。
http://takeda-toshiya.my.coocan.jp/pyuta/index.html
memory.h
/* TOMY PyuTa Emulator 'ePyuTa' Author : Takeda.Toshiya Date : 2007.07.15 - [ memory ] */ #ifndef _MEMORY_H_ #define _MEMORY_H_ #include "../vm.h" #include "../../emu.h" #include "../device.h" class MEMORY : public DEVICE { private: DEVICE *d_cmt, *d_cpu, *d_psg, *d_vdp; uint8_t ipl[0x8000]; // ipl rom (32k) uint8_t basic[0x4000]; // basic rom (16k) uint8_t cart[0x8000]; // cartridge (32k) uint8_t extram[0x4000]; // extram (16k) (省略)
memory.cpp
(省略) #define ENABLE_CART() { \ if(ctype == 4) { \ SET_BANK(0x0000, 0x3fff, wdmy, ipl); \ SET_BANK(0x4000, 0xbfff, wdmy, cart); \ } else if(has_extrom) { \ SET_BANK(0x0000, 0x7fff, wdmy, ipl); \ SET_BANK(0x8000, 0xbfff, wdmy, cart); \ } else { \ SET_BANK(0x0000, 0x3fff, wdmy, ipl); \ SET_BANK(0x4000, 0x7fff, extram, extram); \ SET_BANK(0x8000, 0xdfff, wdmy, cart); \ } \ cart_enabled = true; \ } (省略) void MEMORY::open_cart(const _TCHAR* file_path) { // open cart FILEIO* fio = new FILEIO(); if(fio->Fopen(file_path, FILEIO_READ_BINARY)) { // 8kb ctype = fio->Fread(cart, 0x2000, 1); memcpy(cart + 0x2000, cart, 0x2000); // 16kb ctype += fio->Fread(cart + 0x2000, 0x2000, 1); // 24kb ctype += fio->Fread(cart + 0x4000, 0x2000, 1); // 32kb ctype += fio->Fread(cart + 0x6000, 0x2000, 1); fio->Fclose(); ENABLE_CART(); } delete fio; } (省略)
バイナリはこちらです。(要IPL.ROM)