- Better Cheat Code Menu

- New Cheatcodes for Wavy Navy
This commit is contained in:
tudnai 2021-06-02 23:43:31 -07:00
parent 0582c3db73
commit 14f9828397
6 changed files with 77 additions and 11 deletions

View File

@ -21,6 +21,14 @@
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState
contextName = "ViewController.extraBuf(_:):ViewController.swift">
<PersistentStrings>
<PersistentString
value = "soundGapLabel">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState
contextName = "read_woz:6502.c">
<PersistentStrings>
@ -386,6 +394,9 @@
<PersistentString
value = "view">
</PersistentString>
<PersistentString
value = "ledingInitEdgeLabel">
</PersistentString>
<PersistentString
value = "hires.frame">
</PersistentString>

View File

@ -83,6 +83,10 @@ class AppDelegate: NSObject, NSApplicationDelegate {
ViewController.current?.Cheat_Wavy_Navy_Never_Lose()
}
@IBAction func Cheat_Wavy_Navy_Lose_To_Win(_ menuItem: NSMenuItem) {
menuItem.state = (ViewController.current?.Cheat_Wavy_Navy_Lose_To_Win())!
}
@IBAction func showPreferences(_ sender: NSMenuItem) {
if ( preferencesController == nil ) {

View File

@ -868,6 +868,12 @@
<action selector="Cheat_Wavy_Navy_Never_Lose:" target="Voe-Tx-rLC" id="eIU-Ng-IXi"/>
</connections>
</menuItem>
<menuItem title="Lose to Win" id="sg9-80-u8J">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="Cheat_Wavy_Navy_Lose_To_Win:" target="Voe-Tx-rLC" id="nZA-Yj-MyI"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>

View File

@ -1492,18 +1492,19 @@ class ViewController: NSViewController {
func Cheat_Wavy_Navy_Add_3_Ships() {
let ships = getMEM( 0x4746 )
if ( ships < 7 ) {
setMEM( 0x4746, ships + 3 );
// CALL( 0x1FDA );
}
let ships = min( getMEM( 0x4746 ) + 3, 9 )
setMEM( 0x4746, ships )
m6502.A = ships
// m6502.X = 0x10
setMEM16(0x4728, 0x16F0) // cursor pos: 0x4728:x, 0x4729:y
CALL( 0x1FDA ) // position and number needed? A:Number of ships X:0x10
}
func Cheat_Wavy_Navy_Never_Lose() {
func Cheat_Wavy_Navy_OtherCheats() {
// Replace STC / SBC $0x1 to NOPs...
// setMEM( 0x1E63, 0xEA );
// setMEM( 0x1E64, 0xEA );
// setMEM( 0x1E65, 0xEA );
setMEM( 0x1E63, 0xEA )
setMEM( 0x1E64, 0xEA )
setMEM( 0x1E65, 0xEA )
// // call to decease
// setMEM( 0x1556, 0xEA );
@ -1526,8 +1527,8 @@ class ViewController: NSViewController {
// setMEM( 0x1538, 0xEA );
// lose to win
setMEM( 0x1545, 0xEA );
setMEM( 0x1546, 0xEA );
setMEM( 0x1545, 0xEA )
setMEM( 0x1546, 0xEA )
// var i : UInt16 = 0x15EA;
// while i < 0x1608 {
@ -1536,6 +1537,30 @@ class ViewController: NSViewController {
// }
}
func Cheat_Wavy_Navy_Never_Lose() {
// Replace STC / SBC $0x1 to NOPs...
setMEM( 0x1E63, 0xEA )
setMEM( 0x1E64, 0xEA )
setMEM( 0x1E65, 0xEA )
}
func Cheat_Wavy_Navy_Lose_To_Win() -> NSControl.StateValue {
if ( getMEM16(0x1545) == 0x09F0 ) { // BEQ $1550
// lose to win
setMEM16( 0x1545, 0xEAEA ) // NOP NOP
return .on
}
else if ( getMEM16(0x1545) == 0xEAEA ) { // NOP NOP
// lose to win
setMEM16( 0x1545, 0x09F0 ) // BEQ $1550
return .off
}
else {
print("Not Wavy Navy!")
return .off
}
}
}

View File

@ -214,7 +214,11 @@ extern void kbdUp (void);
extern uint8_t getIO ( uint16_t ioaddr );
extern void setIO ( uint16_t ioaddr, uint8_t val );
extern uint8_t getMEM ( uint16_t ioaddr );
extern uint16_t getMEM16 ( uint16_t ioaddr );
extern uint32_t getMEM32 ( uint16_t ioaddr );
extern void setMEM ( uint16_t ioaddr, uint8_t val );
extern void setMEM16 ( uint16_t ioaddr, uint16_t val );
extern void setMEM32 ( uint16_t ioaddr, uint32_t val );
extern void CALL( uint16_t addr );
extern void interrupt_IRQ(void);

View File

@ -900,10 +900,26 @@ uint8_t getMEM ( uint16_t addr ) {
return Apple2_64K_MEM[addr];
}
uint16_t getMEM16 ( uint16_t addr ) {
return *(uint16_t*)(&Apple2_64K_MEM[addr]);
}
uint32_t getMEM32 ( uint16_t addr ) {
return *(uint32_t*)(&Apple2_64K_MEM[addr]);
}
void setMEM ( uint16_t addr, uint8_t val ) {
Apple2_64K_MEM[addr] = val;
}
void setMEM16 ( uint16_t addr, uint16_t val ) {
*(uint16_t*)(&Apple2_64K_MEM[addr]) = val;
}
void setMEM32 ( uint16_t addr, uint32_t val ) {
*(uint32_t*)(&Apple2_64K_MEM[addr]) = val;
}
void kbdInput ( uint8_t code ) {
// printf("kbdInput: %02X ('%c')\n", code, isprint(code) ? code : ' ');
switch ( code ) {