23class ActionReplay3 final :
public Cartridge {
25 CartridgeTraits traits = {
27 .type = CRT_ACTION_REPLAY3,
28 .title =
"Action Replay 3",
35 virtual const CartridgeTraits &getCartridgeTraits()
const override {
return traits; }
39 using Cartridge::Cartridge;
40 CartridgeType getCartridgeType()
const override {
return CRT_ACTION_REPLAY3; }
47 u8 peek(u16 addr)
override;
48 u8 peekIO1(u16 addr)
override {
return 0; }
49 u8 spypeekIO1(u16 addr)
const override {
return 0; }
50 u8 peekIO2(u16 addr)
override;
51 u8 spypeekIO2(u16 addr)
const override;
52 void pokeIO1(u16 addr, u8 value)
override;
55 void setControlReg(u8 value);
57 isize bank()
const {
return control & 0x01; }
58 bool game()
const {
return !!(control & 0x02); }
59 bool exrom()
const {
return !(control & 0x08); }
60 bool disabled()
const {
return !!(control & 0x04); }
67 isize numButtons()
const override {
return 2; }
68 const char *getButtonTitle(isize nr)
const override;
69 void pressButton(isize nr)
override;
70 void releaseButton(isize nr)
override;
78class ActionReplay :
public Cartridge {
80 CartridgeTraits traits = {
82 .type = CRT_ACTION_REPLAY,
83 .title =
"Action Replay",
90 virtual const CartridgeTraits &getCartridgeTraits()
const override {
return traits; }
94 using Cartridge::Cartridge;
95 void operator << (SerResetter &worker)
override;
96 void resetCartConfig()
override;
103 u8 peek(u16 addr)
override;
104 u8 peekIO1(u16 addr)
override;
105 u8 spypeekIO1(u16 addr)
const override;
106 u8 peekIO2(u16 addr)
override;
107 u8 spypeekIO2(u16 addr)
const override;
109 void poke(u16 addr, u8 value)
override;
110 void pokeIO1(u16 addr, u8 value)
override;
111 void pokeIO2(u16 addr, u8 value)
override;
114 void setControlReg(u8 value);
116 virtual isize bank()
const {
return (control >> 3) & 0x03; }
117 virtual bool game()
const {
return (control & 0x01) == 0; }
118 virtual bool exrom()
const {
return (control & 0x02) != 0; }
119 virtual bool disabled()
const {
return (control & 0x04) != 0; }
120 virtual bool resetFreezeMode()
const {
return (control & 0x40) != 0; }
123 virtual bool ramIsEnabled(u16 addr)
const;
130 isize numButtons()
const override {
return 2; }
131 const char *getButtonTitle(isize nr)
const override;
132 void pressButton(isize nr)
override;
133 void releaseButton(isize nr)
override;
141class AtomicPower final :
public ActionReplay {
143 CartridgeTraits traits = {
145 .type = CRT_ATOMIC_POWER,
146 .title =
"Atomic Power",
153 virtual const CartridgeTraits &getCartridgeTraits()
const override {
return traits; }
157 using ActionReplay::ActionReplay;
158 CartridgeType getCartridgeType()
const override {
return CRT_ATOMIC_POWER; }
172 bool specialMapping()
const {
return (control & 0b11100111) == 0b00100010; }
174 bool game()
const override;
175 bool exrom()
const override;
176 bool ramIsEnabled(u16 addr)
const override;
VirtualC64 project namespace.
Definition CmdQueue.cpp:16