diff --git a/AppleWin/APPLE2E.SYM b/AppleWin/APPLE2E.SYM index cefe8e0..03fd0e5 100644 --- a/AppleWin/APPLE2E.SYM +++ b/AppleWin/APPLE2E.SYM @@ -1,6 +1,10 @@ ; Apple 2 Rom Symbol Table +; Version 5 Renamed "KBD/CLR80COL" -> "KBD/CLR80STORE", "SET80COL" -> "SET80STORE" +; Renamed "CLR80VID" -> "CLR80COL", "SET80VID" -> "SET80COL" +; Renamed "RD80COL" -> "RD80STORE", "RD80VID" -> "RD80COL" +; Version 4 GH#484 ; Version 3 Cross-referenced/Sync'd with APPLE2E.SYM & A2_BASIC.SYM - Added Text Holes +; Added Text Holes ; Version 2 by Michael Pohoreski - AppleWin Debugger Dev ; Version 1 Original @@ -15,18 +19,24 @@ 0026 GBASL 0027 GBASH 0028 BASL -0029 BAS2L +0029 BASH +002A BAS2L 002B BAS2H 002C H2/LMNEM 002D V2/RMNEM -002E MASK/TEMPOP +;$2E aliases 3 symbols +;36 MASK EQU $2E +;37 CHKSUM EQU $2E +;38 FORMAT EQU $2E +002E F8.MASK 002F LENGTH/LASTIN ; Applesoft COLOR F24F ; ROM/Monitor COLOR 30 ; Reference: Apple ][ Reference Manual 0030 COLOR 0031 MODE -0032 INVFLG/PROMPT +0032 INVFLG +0033 PROMPT 0034 YSAV 0035 SAVY1 0036 CSWL @@ -84,8 +94,8 @@ 07FB A2C.TEMP2 ; Softswitches -C000 KBD/CLR80COL -C001 SET80COL +C000 KBD/CLR80STORE +C001 SET80STORE C002 RDMAINRAM C003 RDCARDRAM C004 WRMAINRAM @@ -96,8 +106,8 @@ C008 SETSTDZP C009 SETALTZP C00A SETINTC3ROM C00B SETSLOTC3ROM -C00C CLR80VID -C00D SET80VID +C00C CLR80COL +C00D SET80COL C00E CLRALTCHAR C00F SETALTCHAR C010 KBDSTRB @@ -108,14 +118,17 @@ C014 RDRAMWRT C015 RDCXROM C016 RDALTZP C017 RDC3ROM -C018 RD80COL +C018 RD80STORE C019 RDVBLBAR C01A RDTEXT +C01B RDMIXED C01C RDPAGE2 +C01D RDHIRES C01E ALTCHARSET -C01F RD80VID +C01F RD80COL C020 TAPEOUT C030 SPKR +C040 STROBE C050 TXTCLR C051 TXTSET C052 MIXCLR @@ -135,18 +148,48 @@ C05F CLRAN3 C060 TAPEIN C061 BUTNO C062 BUTN1 +C063 BUTN2 C064 PADDL0 +C065 PADDL1 +C066 PADDL2 +C067 PADDL3 C070 PTRIG -C080 STEPPER -C081 ROMIN + +; Slot-0: Language Card +C080 LCRAMIN2 +C081 ROMIN2 +C082 LCROMIN2 C083 LCBANK2 -C08A ENABLE1 -C08B LCBANK1/ENABLE2 -C08C DATASTROBE -C08D LOADLATCH -C08E SETREADMODE -C08E WRITEPROT -C08F SETWRITEMODE +C084 LCRAMIN2_ +C085 ROMIN2_ +C086 LCROMIN2_ +C087 LCBANK2_ +C088 LCRAMIN1 +C089 ROMIN1 +C08A LCROMIN1 +C08B LCBANK1 +C08C LCRAMIN1_ +C08D ROMIN1_ +C08E LCROMIN1_ +C08F LCBANK1_ + +; Slot-6: DiskII interface +C0E0 DRV_P0_OFF +C0E1 DRV_P0_ON +C0E2 DRV_P1_OFF +C0E3 DRV_P1_ON +C0E4 DRV_P2_OFF +C0E5 DRV_P2_ON +C0E6 DRV_P3_OFF +C0E7 DRV_P3_ON +C0E8 DRV_OFF +C0E9 DRV_ON +C0EA DRV_SEL1 +C0EB DRV_SEL2 +C0EC DRV_SHIFT +C0ED DRV_LOAD +C0EE DRV_READ +C0EF DRV_WRITE ; Firmware ; Renamed due to ROM name collision @@ -281,7 +324,7 @@ C4FA AMOD6 C567 XHEADER C5AA WRITE2 C5D1 XREAD -; Disk Drive +; IIe Technical Reference Manual (1987), Page 317, $C3XX ROM C603 TSTZPG C607 ZP1 C610 ZP2 diff --git a/AppleWin/AppleWin.chm b/AppleWin/AppleWin.chm index a2772ab..230b52f 100644 Binary files a/AppleWin/AppleWin.chm and b/AppleWin/AppleWin.chm differ diff --git a/AppleWin/AppleWin.exe b/AppleWin/AppleWin.exe index 751e247..ad5ad6b 100644 Binary files a/AppleWin/AppleWin.exe and b/AppleWin/AppleWin.exe differ diff --git a/AppleWin/DELREG.INF b/AppleWin/DELREG.INF index e5ec28c..e5074ed 100644 --- a/AppleWin/DELREG.INF +++ b/AppleWin/DELREG.INF @@ -8,11 +8,11 @@ DelReg=RegChange DelReg=RegChange [RegChange] -HKCR,.bin HKCR,.do HKCR,.dsk HKCR,.nib HKCR,.po +HKCR,.woz HKCR,DiskImage HKCU,Software\AppleWin HKLM,Software\AppleWin diff --git a/AppleWin/Debugger_Changelog.txt b/AppleWin/Debugger_Changelog.txt index ac5bc45..10df213 100644 --- a/AppleWin/Debugger_Changelog.txt +++ b/AppleWin/Debugger_Changelog.txt @@ -1,7 +1,89 @@ /* +2.9.1.13 Added: CD now detects ".." to change to the previous directory and chops the trailing sub-directory from the current path. + It worked before but would clutter up the current directory with a trailing "..\". +2.9.1.12 Added: New commands HGR0, HGR3, HGR4, HGR5 to see pseudo pages $00, $60, $80, $A0 respectively. +2.9.1.11 Fixed: Right justify signed decimal values. + Example: + U 300 + 300:A9 80 A9 81 A9 FF A9 00 A9 01 A9 7E A9 7F + Will display as: + LDA #$80 #-128 + LDA #$81 #-127 + LDA #$FF #-1 + LDA #$00 + LDA #$01 #+1 + LDA #$7E #+126 + LDA #$7F #+127 +2.9.1.10 Fixed: Immedate #80 was not showing -128 for the signed decimal value. +2.9.1.9 Fixed: Immediate #0 was showing '#' prefix but not showing zero for the signed decimal value. Changed to show the signed decimal value only if non zero. +2.9.1.8 Changed: Disassembly window now lists symbol labels and symbol target address from User2 in orange. + Example: + U 300 + SYM @ = 303 + 300: 20 03 03 +2.9.1.7 Added: Extended SYM command to auto-generate symbol names when reverse engineering. NOTE: These symbols will be placed in User2. + Example: + SYM @ = 800 // Alias for: SYM _0800 = 0800 +2.9.1.6 Added: Branch instructions now show target address. +2.9.1.5 Added: Disassembly window now shows signed decimal values for immediate values. +2.9.1.4 Changed: Show symbol warnings in Orange, and length of symbols in light blue. +2.9.1.3 Added: DB commanoptionally supports = + DB HGR = 2000:3FFF +2.9.1.2 Fixed: Off by one end address when deleting DisasmData_t +2.9.1.1 Added: X command now supports a range and will chop off the appropiate data sections. + DB 2000:2005 + X 2002:2003 +Released post 1.30.7.0 + +2.9.1.0 Added: Bookmarks now have their own indicator (a number with a box around it) and replace the ":" separator. Updated Debug_Font.bmp + +.18 Fixed: Resetting bookmarks wasn't setting the total bookmarks back to zero. +.17 Fixed: If all bookmarks were used then setting a new one wouldn't update an existing one to the new address. +.16 Fixed: Replacing an existing bookmark incorrectly increased the total bookmark count. +.15 Cleanup: HELP CALC examples and See also. +.14 Fixed: HELP JSR wasn't color-coding syntax. +.13 Added: PROFILE LIST now shows how many clock cycles were executed. +.12 GH-PR#480: + GH#462: Default to Shift+Left Click to toggle disasm columns + Use 'disasm click ' to reconfigure this + GH#473: Fixed bug caused by Util_MemoryTextFile, Line 51 not zero-terminating buffer by invalidating it. + GH#476: Fixed off-by-one bug wrapping in debugger console + GH#483: Shift+Left mouse button to toggle 6502 Status flag bits + GH#484: Some corrections to APPLE2E.SYM +.11 Added:"Warning" for long symbols when symbol table is loaded +.10 Changed: "Warning" of symbols that alias to "Info." +.9 Continuation of 2.8.0.8: Fix overflowing disassembly pane for long symbols +.8 Fixed: Inactive Language Card bank now grayed out, main memory no longer double inverse. +.7 Fixed: Memory softswitches are now in chronological order, and their background is a dark grey +.6 Added: Read/Write for Main/Aux memory now shown +.5 Added: Support for RAMWORKS in the Debugger Language Card Status +.4 Added: Language Card Status now displayed +.3 Cleanup drawing of soft switches +.2 Fix crash when NTSC save/load total path length is > console width (80 chars) +.1 Fixed: Implemented missing debugger "CD" command +2.9.0.0 Added: ntsc save [filename], ntsc load [filename], to save/load the NTSC palette. + Default filename is "AppleWinNTSC4096x4@32.data" + To load this file in GIMP: Open, Select File Type: "Raw image data", Raw image data (*.data), RGB Alpha, Width: 4096, Height: 4 + to save this file in GIMP: Open, Export To, Select File Type (By Extension) Raw image data, RGB Type: Standard (R,G,B) + +.12 Fixed: [PVS-Studio] Fixed false positive of buffer overflow with MIP_RANDOM +.11 Fixed: [PVS-Studio] Fixed missing call to sprintf() in ConfigSave_PrepareHeader() +.10 Fixed: [PVS-Studio] Fixed no-op in _6502_GetStackReturnAddress() + .9 Added: BLOAD now recognizes the extensions .hgr or .hgr2 to load to $2000, or $4000 respectfully + .8 Fixed: Showing/hiding the address and/or opcodes will show long symbolic targets without overflowing into the register info pane Bug #227 + .7 Fixed: ASC #:# with string containing null byte wouldn't show rest of string + .6 Added: Print-Screen when in debugger will copy the debugger window as text + .5 Added: Print warnings about duplicate symbols when symbol tables are loaded + .4 Fixed: Check for buffer overflow in CmdSymbolsInfo() if _CmdSymbolsInfoHeader() returns a very long string + .3 Removed EXITBENCH from falsely being triggered with E. + .2 Cleaned up error message for syminfo on invalid symbol table. + .1 Fixed: Symbolic Targets > 20 chars no longer overflow into register window 2.8.0.0 Released with AppleWin 1.25 2.7.0.# +.36 Fixed: empty command was re-triggering previous command. Example: DW 6062, // test +.35 Added: DW address -- round the length up to even number for convenience. Example: DW 6062 is equivalent to: DW 6062:6063 +.34 Fixed: Unified auto-defined name: B_, W_, T_ for byte, word, or text respectively .33 Fixed: ASC range -- auto-define symbol name: T_#### .32 Fixed: DW range -- auto-define symbol name: W_#### .31 Fixed: DB range -- auto-define symbol name B_#### @@ -322,7 +404,6 @@ 2.6.0.8 Released with AppleWin 1.16.1 ->>>>>>> .r619 2.6.0.6 Released with AppleWin 1.15 .6 Added new command '@' to display the search results .5 Fixed display results of Searching to be colorized diff --git a/AppleWin/History.txt b/AppleWin/History.txt index 49542b5..88b4e6d 100644 --- a/AppleWin/History.txt +++ b/AppleWin/History.txt @@ -9,20 +9,693 @@ https://github.com/AppleWin/AppleWin/issues/new Tom Charlesworth -1.26.2.1 (Experimental) - 19 Mar 2017 -------------------------------------- -. [Bug #392] Fixes for a2audit.dsk +1.30.12.0 - 27 Sep 2022 +----------------------- +. [Bug #1128] Increase paddle maximum offset - fixes 'Learning with Leepers'. +. [Bug #1127] Debugger: fix memory search command. +. [Bug #1126] Fix rare crash bug (when unprotected WOZ in drive). +. [Bug #1125] Improve WOZ support: fixes 'Accolade Comics'. +. [Bug #1121] Fix for aspect ratio in full-screen: + - Now revert to uniformly scaling in both x & y directions unless user specifies resolution. + - NB. Regression at 1.30.7.0 when adding VidHD support. +. [Bug #1119] Fix render issue in 'Color (PAL Monitor)' video mode. +. [Bug #1022] WOZ support: Better cross-track positioning - fixes 'Balance of Power'. +. Fix for loading old save-states with Phasor card (bumps MB version in save-state to v9). + - NB. Regression at 1.30.10.0 when fixed Phasor to "use correct primary AY8913". +. Change: Command line: support '-s2 ssc'. + + +1.30.11.0 - 23 Jun 2022 +----------------------- +. [Change #1103] Debugger: support memory breakpoints for HDD DMA r/w's: + - When the debugger is active (eg. breakpoints enabled) then trap on HDD r/w's that match the BPM[R|W]. + - NB. the breakpoint will fire after the whole HDD r/w operation has completed. +. [Bug #1113] Fix for Uthernet II registers repeating in DEVICE SELECT I/O space. [@audetto] +. [Bug #1110] Fix for WOZ and quarter tracks for A2osX's 192K floppy image. + - Support two adjacent phases turned off in rapid sequence. +. [Bug #1108] Fix for C3 ROM not set correctly when loading a save-state with a VidHD (in slot 3). +. [Bug #1106] Fix for minor screen corruption with VidHD enabled. + - Debugger: fix for mouse-click hit-tests with VidHD enabled. +. [Bug #1104] Fix for rare Mockingboard speech race condition when debugger-stepping. +. [PR #1098] Internal: refactor debugger. [@kiyolee] +. Change: Mockingboard's SSI263: support reg3's amplitude (fix for TR speaking during SSI263 detection). +. Change: DebuggerAutoRun.txt: extend search path to first try CurrentDir, then ProgramDir. + + +1.30.10.0 - 27 May 2022 +----------------------- +. [Change #1097] Extend Uthernet II to support DNS offloading. [audetto] + - Details: https://github.com/a2retrosystems/uthernet2/wiki/Virtual-W5100-with-DNS + - No need for ethernet, so now works with host PC's WiFi. + - Supported by @oliverschmidt's A2Stream v1.2. + - NB. This virtual DNS is enable by default (but can be disabled via the Config UI). + - NB. Real W5100 chips don't offer this! +. [Bug #1078] WOZ support: Better LSS support for reading write-protect. + - Fix images 'Run For It' and 'Stickybear Town Builder' (both when write-protected). +. [PR #1100] Uthernet II fixes for UDP and IPRAW modes. [audetto] +. [PR #1084 + others] Internal: refactor debugger. [kiyolee] +. Fix Phasor card: use correct primary AY8913 for Phasor-native & MB modes (now checked in mb-audit v1.2). +. Command line: add -wav-speaker & -wav-mockingboard + - Save a .wav of either Speaker or Mockingboard audio output during the emulation session. + - Warning: there's no file size limit, so it just keeps saving until AppleWin exits. + + +1.30.9.0 - 23 Mar 2022 +---------------------- +. [Change #518] Support Uthernet II card in slot 3. [audetto] + - EG. Use with Contiki, A2osX, ii-vision, A2Stream etc. + - Support for W5100 modes: TCP, UDP, IPRAW and MACRAW (no support for PPPoE mode, interrupts and SPI). +. [Bug #1066] Fix for save-states where (eg) disk image name contains '#' character. +. [Bug #1017] Fix for printer interface where character got output twice. +. [PR #1031 + others] Internal: refactor string output handling. [kiyolee] +. Change: default install of AppleWin now sets slot 3 as empty (was Uthernet I card) +. Fix 6522 bug: IFR.T2 was always set when counter.b15=1 + + +1.30.8.0 - 8 Feb 2022 +--------------------- +. [Bug #1023] WOZ support: Tweak to track sync support. +. [Bug #1020] WOZ support: Significant bit-cells after a gap between latch access upped from 50 to 100. + - Fixes: What's My Logic, Forbidden Quest, The Isle of Mem. +. [Bug #1018] Support AN3 for //e models. +. [Bug #1015] Registry: fix support for legacy 'Harddisk Enable' key. +. [PR #1028] Internal: Split 6522 out of MB code and into own class (bumps MB version in save-state to v8). +. [PR #1025] Load save-state for Cards: improve error messages. [audetto] +. [PR #1014] Correct BMP creation. [audetto] +. SSC: Fix for command line -dcd not being honoured. (Regression) +. VidHD: Fix load save-state for II/II+ when VidHD's SHR is being updated. +. Debugger: see Debugger_Changelog.txt, but including: + - Added: CD now detects ".." to change to the previous directory and chops the trailing sub-directory from the current path. + - Changed: Disassembly window now lists symbol labels and symbol target address from User2 in orange. + - Added: Branch instructions now show target address. + - Added: Disassembly window now shows signed decimal values for immediate values. + + +1.30.7.0 - 19 Dec 2021 +---------------------- +. [Bug #997] Support VidHD card for IIgs Super Hi-Res (SHR) video modes, eg. for Total Replay box art. + - Support VidHD in slot 3 (via Config GUI or '-s3 vidhd'). + - Only partial VidHD support - ie. just for SHR video modes, but SHR is supported for all Apple II models. + - NB. AppleWin's window is slightly enlarged when VidHD card is inserted. + - Command line: Allow user to specify width & height (for full-screen); and allow separate x,y scaling in full-screen mode. + - eg. for 4:3 aspect ratio on monitors that support it: -no-full-screen -fs-width=1600 -fs-height=1200 + - Debugger: add 'shr' command to view video. +. [Change #1007] HDD: Fail if r/w access touches $Cnnn I/O space + - Debugger: On a HDD r/w failure, execution will break, and the debugger will show a stop reason message. + - Also fix HDD write wrapping at 64KiB boundary. +. [Change #996] Adapt HDD firmware to be slot-independent. + - Internal only, since currently no support to specify HDD Controller card in another slot. +. Debugger: Add 'brk all ' command to break on any BRK or invalid opcode. + + +1.30.6.0 - 30 Oct 2021 +---------------------- +. [Bug #993] Fix Mousecard not persisting after a machine's hardware changes. (Regression at 1.30.5.0) +. [Bug #985] Fix one-shot paddle timers. [xotmatrix] +. [Bug #989] Debugger: Fix disassembly for NMOS 6502's JMP (Indirect) not showing correct target address. +. [Change #987] Debugger: Add 'lbr' command to show Last Branch Record for a change to the control-flow from an instruction or interrupt. + - NB. Bcc opcodes that aren't taken don't affect lbr. +. Debugger: Add 'brkint ' command to break at the instruction after an interrupt is taken. + + +1.30.5.0 - 2 Oct 2021 +--------------------- +. [Change #972] Add SNES MAX card (in slots 3, 4 or 5) to support up to 2 SNES (or 12-button) controllers. +. [Change #946] Add 4Play card (in slots 3, 4 or 5) to support up to 4 Atari controllers. +. [Change #420] Uthernet card's state persisted to save-state. + - NB. it's best to get your DHCP server to assign a static IP for the card's MAC address. +. Change: SAM card's state persisted to save-state. +. [Bug #980] Fix 'Authentic Disk Speed' regression (at 1.30.4.0). +. [Bug #981] Fix command line -d2 (and -h2) which weren't reporting an error if image couldn't be opened. +. [Bug #981] Support command line if there are multiple spaces between args. +. [PR #983] Improve save-state card management + - Use Registry "Configuration\Slot n' locations to save each card's type & config. + - eg. "Last Harddisk Image 1" has moved from "Preferences" to "Configuration\Slot 7". +. AppleWin's Debugger help: document how to allow CTRL+SHIFT+0 to work (to set bookmark-0). + + +1.30.4.0 - 29 Aug 2021 +---------------------- +. [Change #975] Extend Configuration's Disk GUI to support a Disk II controller in slot 5. +. [Change #977] Add per-slot configuration to the Registry (and conf.ini). + - eg. "Last Disk Image 1" has moved from "Preferences" to "Configuration\Slot 6". +. [Change #976] AppleWin's help now documents Control-PrintScreen to copy the debugger's disassembly window to the clipboard. +. [Change #960] Floppy image names are now stored in Registry (or conf.ini) with their full path. + - NB. Hard disk images were already stored with full path. + - NB. save-states still only store the filename (and use "[HDV] Starting Directory" or prompt user to find the file). + + +1.30.3.0 - 19 Jun 2021 +---------------------- +. [Change #962] Remove the HookFilter.dll, and statically link instead. + - this removes the runtime dependency on VCRUNTIME140.dll (ie. vc_redist.x86.exe). +. [Bug #965] Fix display flicker on exit. + + +1.30.2.0 - 31 May 2021 +---------------------- +. [Change #947] Uthernet: fix so that a h/w change doesn't require the app to be close & reopened. [audetto] +. [Change #876] Command line: change -fs-height so only applied during full-screen (Windows mode unaffected). +. [Bug #958] Debugger: Mockingboard speech interrupt not working in debugger 'gg' mode. +. [Bug #952] Fix Mockingboard SC-01 speech for Ape Escape. +. Fix Phasor regression (at 1.30.0.0) as it does support reading AY-3-8913 registers in Mockingboard mode & Phasor native mode (just not Echo+ mode). +. Debugger: when displaying 6522 registers, if T1 and/or T2 is active, then display in white. + + +1.30.1.0 - 3 May 2021 +--------------------- +. Improve Mockingboard's 6522 support for cycle-accurate reading of IFR at Timer1/2 underflow. +. Improve logging of Speaker code. + + +1.30.0.0 - 18 Apr 2021 +---------------------- +Note: This version only works under Windows XP and later. + +. [Change #693] AppleWin built with VS2019 using v141_xp platform toolset +. [Change #939] Improved support for SSI263 speech chip. + - Fix for 'Classic Adventure' (#929) not detecting speech chip. + - Support the 2-bit Duration b7:6 of phoneme register for SSI263 (not SC01). + - Support 2nd SSI263 at $Cn20 connected to 6522-A (at $Cn00). + - SC01: only support it mapped to 6522 at $Cn00. +. [Change #936] Swap Joystick Buttons not working + - Command line (-swap-buttons) or GUI "Swap 0/1" now swaps buttons 0/1 for all devices. +. [Change #930] WOZ support: add some random jitter in the bit stream + - A better alternative fix for WOZ images: 'Wasteland' and 'Legacy of the Ancients'. + - Fix for WOZ images: 'Gruds in Space' (bug #921) and 'Buzzard Bait' (bug #930). +. [Change #912] For 'Base 64A' add support for its F2 key via the Windows DEL key. +. [Change #876] Starting up windowed mode & full-screen mode + - New command line switch -no-full-screen to start in windowed mode. + - Added command line switch -full-screen as an alias for -f. +. [Change #864] Anti-M 1.8 doesn't work + - Improved Disk II card's data latch value when: (a) drive disconnected or (b) connected, but empty. + - New command line switches -d1-disconnected and -d2-disconnected to disconnect drives from slot-6 card. +. [Bug #934] Characters doubled in BASIC.SYSTEM when using -speech switch. + - Trap calls to COUT1 and BASICOUT (instead of COUT). +. [Bug #827] Fix bug where NSC is recognised on Apple II/II+ when slot-3 is empty. + - Support NSC on 6502-based Apple II's via F8-ROM for ProDOS 2.5 compatibility. +. [Bug #770] Fix so that no AY changes get dropped. + - Support reading the AY-3-8913 registers (not Phasor though). +. [Bug #652, #833] Fixes for Mockingboard's 6522 VIA. + - Cycle-accurate TIMER1/2 r/w for all addressing modes. + - Support TIMER1 latch in one-shot mode. + - Improve 6522 reset support - only ACR,IFR,IER affected. +. [PR #891] Fix for "Unable to capture PrintScreen key" warning on startup. + - Adds a "Don't show this message again" checkbox to the message. +. Debugger: add red 'IRQ' after the v/h-pos when IRQ is being asserted to the 6502. +. Debugger: improve mini-memory views for 6522 & AY8913 chip registers. +. Much refactoring to the code by Andrea Odetti / @audetto. + + +1.29.16.0 - 1 Nov 2020 +---------------------- +Note: This is the last planned version to support Windows 2000. +. [Bug #851] RGB support: AppleColor card (-rgb-card-type apple) is now an alias for Video7's RGB-SL7 card (-rgb-card-type sl7). +. [Bug #850] RGB support: removed the preconditions for AN3 setting the RGB video mode flags. + - IOUDIS soft-switch is for //c only, so removed support for //e. + + +1.29.15.0 - 25 Oct 2020 +----------------------- +. [Change #764] Fully support the RGB cards, and introduce a new 'Color (RGB Card/Monitor)' dedicated video mode. + - [PR #837] Support for 'Le Chat Mauve' Eve and Féline RGB cards. + - [PR #826] Support for Video7's RGB-SL7 card. + - New command line switch to select RGB card type: -rgb-card-type: apple (default), sl7, eve, feline + - New command line switches for SL7: -rgb-card-foreground & -rgb-card-background + - NB. The previous 'Color (RGB Monitor)' has now been renamed to 'Color (Composite Idealized)'. +. [Change #817] Request for key-accelerators for UI operations. + - Ctrl+F3/F4 will show the Drive-1/Drive-2 pop-up menus. (Then use cursor up/down to pick a menu item.) +. [Change #691] Improved determining path & filename when saving/loading a save-state. +. [Bug #838] Improved support for accented ANSI chars in pathnames in save-states. +. [Bug #612] Support IRQ cycle-accuracy in full-speed (unthrottled) mode. +. [Bug #608] Fixed regression in Broadsides' Mockingboard detection (introduced at 1.29.6.0). +. Extended support for command line switches -d1,-d2,-s5d1,-s5d2,-h1,-h2 such that if the param is "", then it will eject/unplug the disk/harddisk. +. Development PRs to improve code quality: #840, #842, #843, #847 + + +1.29.14.0 - 17 Aug 2020 +----------------------- +. [Change #822] Updated Uthernet card support to use Npcap for Win10. +. [Change #806] Added support for 'Base 64A' - a Taiwanese Apple II clone. +. [Change #763] Support for PAL(50Hz) killing color-burst during TEXT video mode. + - When 50Hz, then AppleWin's window title changes to "Color (PAL Monitor)" instead of "Color (NTSC Monitor)" +. [Change #781] Loading a large save-state takes some time - added a busy indicator. +. [Change #139] NIB disk image: added warning if any track's first D5-nibble triple isn't an address prologue. +. [Bug #824] Fixed a regression in multi-zip support (introduced at 1.29.10.0). +. [Bug #820] Fixed a GDI Object leak (occurring when accessing the Disk II with AppleWin minimised). +. [Bug #813] Mockingboard playback looping after entering debugger then configuration. +. [Bug #809] Fixed a memory leak. +. [Bug #801] Wrong timing with LSR abs,X / ROR abs,X / ROL abs,X for the 6502 CPU. +. [Bug #796] Fix for 'IRQ occurring on last cycle of opcode' not always true. +. [Bug #751] No-Slot Clock running and power-cycle can causes lock-up on power-cycle. + - NSC state persisted to save-state. + - added a new switch '-no-nsc' to configure Apple II without an NSC. +. [Bug #663, #691] Fixes for image loading switches (-d1,-d2,-h1,-h2,-s5d1,-s5d2): + - support relative paths (#663). + - updated the current directory with the path for each loaded image (#663) & when saving state (#691). + - added a new switch '-current-dir ' to guarantee the current dir after using image loading switches. +. [Bug #52] Fixed the 6502/65C02 false-read of 6522 issue for Willy Byte! +. [PR #800] Improved debugger's rendering speed for PrintGlyph(). + + +1.29.13.0 - 31 May 2020 +----------------------- +. [Bug #790] Fixed regression for -d1,-d2 & -s7-empty-on-exit (introduced at 1.29.7.0). +. [Change #787] Debugger: Extended 'cycles part' command to do timings relative to a user-specified base. +. [Change #783] Debugger: Extended 'tf' command to include cycle count. +. [Change #720] Debugger: Added more symbols to APPLE2E.SYM. + - NB. LC ($C08n) symbols are now correct for the LC, so 'LDA $C08C,X' will disassemble as 'LDA LCRAMIN1_,X' + instead of 'LDA DATASTROBE,X'. So now perhaps less helpful when stepping Disk II code. +. [PR #785] Debugger: Improvements to Bookmarks. + - AppleWin.chm: Added debugger help about Bookmarks. +. Fixed occasional speaker clicks in full-speed mode. + + +1.29.12.0 - 26 Apr 2020 +----------------------- +. [PR #757] Allow use of an INI-file for configuration instead of the Registry (fixes #709). + - new command line switch: -conf +. [Change #773] Added Apple II J-Plus support. +. [Bug #778] Fixed for when Joystick(s) are disabled. +. [Bug #777] Fixed Phasor speech (SSI263) to match Mockingboard (when in Mockingboard mode). + - fixes: #698 (Rescue Raiders), #753 (Bejeweled). + - also improvements to Phasor card's native Phasor mode. +. [PR #775] Debugger: Fixed so that hitting "=" in the debugger sets PC to the current cursor address. + + +1.29.11.0 - 27 Mar 2020 +----------------------- +. [Change #771] Added new command line switch to load custom ROM: -rom . + - Supports 12KiB (at $D000) and 16KiB (at $C000) rom files. +. [Bug #765] Lancaster (Total Replay) hangs when starting second game. +. [Change #734] DiskII controller card: support 13-sector firmware. + - The card auto-selects the firmware based on the .woz (v2 or higher) image properties. + - Only change the firmware at reset/reboot to avoid changing whilst running in $C6xx space! + - Fixes 'The Best of MUSE' & 'MicroChess 2.0' (#732) + + +1.29.10.0 - 13 Feb 2020 +----------------------- +. [PR #756] Write support for WOZ1/WOZ2 images. + - Fixes titles that need write support (see: #686, #704, #705). + - Allow creation of a blank (WOZ2) image (see AppleWin.chm: 'Creating Disk Images'). + - multi-file zip support extended to scan for the first valid image. + - useful for most woz-a-day multi-file zips which have at least 2 entries and previously needed unzipping. +. NB. files in multi-file zips are still write-protected (same for all image types, not just woz). + + +1.29.9.0 - 26 Jan 2020 +---------------------- +. [Bug #750] Fixed double-clicking a registered file-type issue (regression introduced at 1.29.8.0). +. [Bug #752] Fixed Ctrl+Alt+Break wasn't emulating CTRL+OA+RESET (regression introduced at 1.29.8.0). + + +1.29.8.0 - 19 Jan 2020 +---------------------- +. [Bug #749] Hotkeys to change emulation speed using Ctrl+n: now ignored if ALT is pressed. +. [Bug #748] DiskII: data latch returns a rand() value when no disk is in drive. +. [Bug #746] Debugger: correctly repaint Apple II screen when showing it from debugger. +. [Bug #745] WOZ: Support for large tracks. +. [Change #743] Added new command line switches: + -left-alt-control-buttons : left-ctrl=button0, left-alt=button1 + -right-alt-control-buttons : right-alt=button0, right-ctrl=button1 + -swap-buttons : for swapping buttons 0 & 1 +. [Bug #733] Alternate fix for WOZ 'Wasteland'. +. [PR #723] Fixed way to clear a std::string. +. Configuration->Input: Added 'Swap 0/1' toggle for swapping buttons 0 & 1. +. WOZ support: Removed version check on INFO section. +. Display MessageBox with all unsupported commands that were passed in (can choose to continue or exit). +. Debugger: Added new 'cycles ' command to show cycles as absolute or relative. + + +1.29.7.0 - 20 Dec 2019 +---------------------- +. [Change #726] Disk II card: supported in slot 5 via '-s5 diskii' command line. + - use in conjunction with -s5d1 . + - NB. No support via Configuration GUI for insert/ejecting images. +. [Change #737] Debugger: Changed 'cycles' to show the cycle delta since the step/breakpoint etc. + - NB. Since 1.29.3.0 this has been the absolute cumulative cycle count. +. [Bug #740] Debugger: gr/hgr/dgr/dhgr commands will honour the state of the MIXED mode. +. [Bug #733] Fixed WOZ 'Wasteland' and also NIB 'Wasteland'. +. [Bug #451] Debugger: fix for BPM[R|W] triggering on control-flow instructions' target address. +. [Bug #355] For first-time installs of AppleWin, soundtype now defaults to WAVE (was NONE). +. [PR #730] Speed-up for 'Color (RGB Monitor)' video mode. + + +1.29.6.0 - 18 Nov 2019 +---------------------- +. [Bug #724] Fixed so that 6502 interrupt is delayed by 1 opcode when interrupt occurs on last cycle of opcode. + - fixes French Touch's "Mad Effect" & "Mad Effect #2" demos. +. [Bug #711] Fixed Mockingboard initial "stretched" music playback (regression introduced at 1.28.7.0). +. [Bug #707] Fixed ADTPro (running under AppleWin) not working with real COM ports. +. [Bug #701] Fixed 6522's TIMER being out-of-sync with 6502. +. [Bug #699] Fixed French Touch's "Mad Effect". See #656, #701, #724. +. [Bug #680] Fixed video tearing (eg. for FT's "Scroll Scroll Scroll" & "Mad Effect #2"). +. [Bug #659] Fix for Applied Engineering's Phasor song player (noisy playback) (regression introduced at 1.26.3.4). +. [Bug #656] Changed so only TEXT ($C050/1) and MIXED ($C052/3) have a 1 cycle delay (extension to 1.28.8.0). + - fixes French Touch's "Mad Effect" demo. + - fixed Deater's "Cycle-count Megademo" (vertical GR grey line shouldn't be visible between GR & HGR video). +. [Bug #652] Fixed 6522's TIMER to underflow at 0x0000 -> 0xFFFF + - and T1C=0x0000 now correctly underflows on next cycle. +. [Bug #435] COM ports above COM9 weren't available from the UI. +. [Change #716] Help's troubleshooting section: added an item for no Apple II speaker sound. +. [PR #715] Memory fix for struct ImageInfo. +. [PR #694] Debugger: Symbol loading: Fix random crash upon start up. +. Fixed crash with debug command line switches: -m and -no-mb. + +(1.29.5.0 - skipped) + +1.29.4.0 - 24 Oct 2019 +---------------------- +. [Change #702] Debugger: In soft-switch display (row-80), show a red 'x' when AltZP (and AltLC) is enabled. +. [Change #666] Debugger: When video-scanner position is off-screen then show v,h as yellow (was red). +. [PR #710] Debugger: Added BPMR and BPMW to break on a read or write (respectively) to a memory address or range. + + +1.29.3.0 - 13 Oct 2019 +---------------------- +. [Change #692] Added command line switch to unplug HDD controller card on exit: + - -s7-empty-on-exit +. [Change #689] Added command line switches to set CPU speed and machine type: + - -clock-multiplier , where value is a [0.5-3.9] base-clock multiplier (ie. same as the Config UI's slider) + - -model +. [Change #666] Debugger: support showing video-scanner v,h position and cycle count. + - added debugger command: videoinfo to configure display. + - added auto-run of DebuggerAutoRun.txt on AppleWin initial start-up. +. [Bug #700] Fixed ProDOS8 2.5.0 alpha6: + - support INC $C08B (and similar) to set LC to write mode - 65C02 only. + - support INC $C08B,X (X=0) to set LC to write mode - 6502/65C02/816. (Fixes #404) +. [Bug #695] Fixed WOZ 'Taipan' not booting. + - fixed reading write protect on a write access & support Sequencer Function. +. [Bug #668] Fixed WOZ 'Seafox' not booting. + - set machine = Unenhanced Apple //e or lower & need slot2 empty. + - disable SSC in slot-2 using: '-s2 empty' command line switch. + - added '-s1 empty', '-s3 empty' and '-s6 empty' too. +. [Bug #404] a2audit.dsk 1.06 now working. (See #700) +. [Bug #319] SmartPort return address was wrong when crossing page (fix to slot-7 HDD's firmware). + - NB. Old save-states where the 6502's PC is in the old firmware now can't be loaded. (AppleWin will show an error) +. [PR #687] Replace char * with std::string. + + +1.29.2.0 - 6 Sep 2019 +--------------------- +. [Change #678] Hotkeys to change emulation speed: + - Ctrl-0 Toggles between custom speed and Full-Speed + - Ctrl-1 Sets 1 MHz + - Ctrl-3 Sets Full-Speed +. [Change #671] Register .woz extension with AppleWin. Updated AppleWin.chm & DELREG.INF. +. [Bug #685] Fixed support for French Touch's "CHIP" demo (Mockingboard / multi-TIMER interrupt support). +. [Bug #677] Loading a save-state wasn't restoring the pending IRQ. +. [Bug #672] For WOZ images: all even disk I/O read accesses will now read the data latch. +. [Bug #650] NTSC TV (Color and B&W): image was half an Apple II scanline vertically shifted down. +. [PR #674] Prevent uninitialized value bugs and improve string safety. + + +1.29.1.0 - 27 Jul 2019 +---------------------- +. [Bug #662] Fixed WOZ 'Wizardry III' not booting. +. [Bug #669] Fixed WOZ 'Space Quest I' not booting reliably. +. [Bug #670] Fixed PAGE2 not displaying correctly when in full-speed mode (regression introduced at 1.28.8.0). + + +1.29.0.0 - 8 Jul 2019 +--------------------- +. [Change #544] Support for .woz disk images. + - WOZ1 and WOZ2 formats supported. + - read-only: images forced to write-protected (so 'Stickybear Town Builder' doesn't work). + - only 5.25" (not 3.5"). + - known issues: 'Wizardry III' not booting. + + +1.28.8.0 - 28 Jun 2019 +---------------------- +. [Change #648] Support 50Hz(PAL) video refresh rate and implicitly PAL 1.016MHz. + - NB. TV video modes still use NTSC rendering. +. [Bug #656] Fix for PAGE1/2 ($C054/55) not having a 1 cycle delay. + + +1.28.7.0 - 15 Jun 2019 +---------------------- +. [Bug #654] Fix for Sather's "Little Text Window" not rendering correctly. +. [Bug #652] Fix for 6522 TIMER1's period to be N+2 cycles. + + +1.28.6.0 - 2 Jun 2019 +--------------------- +. [Bug #651] Cycle-accurate interrupts: + - Interrupts sources are checked after every opcode (full-speed after every 40 opcodes). + - 6522 TIMERs in free-running mode now account for the underflowed cycles when resetting the count. + + +1.28.5.0 - 6 Apr 2019 +--------------------- +. [Change #631] Improvements for the RGB AppleColor card: + - Relax the video-mode precondition to just ignore if VF_MIXED (previously required HIRES on) for Apple II Desktop. + - Changing from DHGR B&W mode to HGR remains in B&W (color burst is off). + - For '50% scan lines', don't blend in NTSC B&W mode, as this was inconsistent with the RGB colour rendering. +. [Change #633] Improvements for the RGB AppleColor card: + - Improved the video-mode precondition to ignore if 80COL ($C00C/D) occurs before DHIRESON ($C05F) for Renegade. + - Support new switch -rgb-card-invert-bit7 to invert bit7 for Dragon Wars. + + +1.28.4.0 - 16 Mar 2019 +---------------------- +. [Change #616] Improved accuracy for 'RGB (Color Monitor)' for hires. +. [Bug #611] Holding down F9 to cycle through the video modes results in occasional flicker with garbage. +. [Bug #627] Rainbow demo not working correctly when vertical blend is enabled. +. [Bug #628] Filename suffix check for .gz and .zip needs to be case-insensitive. + + +1.28.3.0 - 3 Mar 2019 +--------------------- +. [Change #625] AltGr+ does not send the value to $C000. + - This reverts the default behaviour introduced from 1.27.6 (#558). + - Use -altgr-sends-wmchar to allow AltGr+ to work correctly together. + - NB. The reason for the revert was that it was preventing international keyboards from typing certain characters. +. [Change #616] Vertical blending now uses 560-pixel granularity for half-dot shift support (consistent with all other video modes). + + +1.28.2.0 - 24 Feb 2019 +---------------------- +. [Change #616] Support vertical blending for 'RGB (Color Monitor)' for hires. + - Support the old AppleWin 1.25 vertical blending for hires via a 'Vertical Blend' checkbox. +. [Change #621] Support RGB AppleColor card's 160-color pixel mode by squashing 640 pixels into 560 pixels. + - Squashing is done by losing every 8th pixel. +. [PR #623] Do not reset on minor state load errors. +. [Bug #609] Configuration dialog didn't correctly reflect lack of Mockingboard/Phasor when loading a save-state without this sound card. + + +1.28.1.0 - 2 Feb 2019 +--------------------- +. [Change #523] Support Extended 80-Column Text/AppleColor Card's DHGR Mixed mode and 560x192 Mono mode. +. [PR #620] Corrected a few symbol names in APPLE2E.SYM for the 80STORE and 80COL I/O addresses. +. [Bug #617] Apple II,II+ keyboard: up/down arrow keys are now ignored. + + +1.28.0.0 - 12 Jan 2019 +---------------------- +. [Change #357] Resurrected the AppleWin 1.25 "Color (Standard)" video mode as "Color (RGB Monitor)". + - This is equivalent to emulating RGB video, ie. a video mode with sharp text and pixels. + - NB. Unlike AppleWin 1.25, this is now cycle-accurate, so demos that synchronise with the video scanner will work correctly. +. [Change #603] Removed support for v1 save-state files. + - Any v1 save-state files should be loaded into AppleWin 1.27, and then re-saved to a v2 save-state file. +. [Change #597] Removed the functionality for CTRL+F10 to reveal the mouse cursor. +. [Change #585] Added a 'Swap' HDD button to the Configuration->Disk property sheet. +. [Bug #608,#236] Mockingboard's 6522 TIMER1 wasn't generating an interrupt quickly enough for detection routines for Broadside and Ultima III Jukebox. + + +1.27.13.0 - 8 Dec 2018 +---------------------- +. [Bug #303, #599] Fix for Ultima V not loading in Authentic Speed mode (regression introduced at 1.27.9.0). +. [Change #205] Added support for Apple II/II+ custom 2K video ROMs. + - Extended command line switch: -videorom + - If the ROM size is 2K, then it replaces the video ROM for the Apple II/II+. + + +1.27.12.0 - 17 Nov 2018 +----------------------- +. [Change #574] Added support for PAL/European or custom 8K video ROMs: + - Added new command line switch: -videorom + - Replaces the video ROM for the Enhanced //e. + - Support video ROM sizes of 4K, 8K and 16K (top 8K only). + - NB. The rocker switch is set to the European video ROM position. + - F10 (for //e or Enhanced //e models) emulates the PAL //e's rocker switch (under the keyboard). + - Use to toggle between European or US video ROM. +. [Change #583] Added new switch: '-no-hook-alt': + - Used to prevent left/right ALT from emulating Open/Solid Apple keys. + - For European keyboards where AltGr is needed to type keys like '[',']'. + + +1.27.10.0 - 4 Nov 2018 +---------------------- +. [Change #590] Apple II original: default to 48K (so no LC installed in slot-0). + - Added new command line switch: -s0 + ('lc' is an alias for 'languagecard') + - When LC is in slot-0, it now use the Apple II+'s F8 (auto-start) ROM +. [Change #408] Support Saturn 64K and 128K cards in slot-0. + - Added new command line switch: -s0 + ('saturn' is an alias for 'saturn128') +. [Bug #591] Save-state wasn't preserving the 'key-waiting' flag. +. [Bug #587] Debugger: disassembly for branch targets < $1000 were missing the leading '0'. + + +1.27.9.0 - 2 Oct 2018 +--------------------- +. [Bug #582] Support for partial disk II latch reads when accesses are very close. + - Fixes Curse of the Azure Bonds & Pool of Radiance (saving characters and creating disks). + + +1.27.8.0 - 9 Sep 2018 +--------------------- +. [Bug #555] Fix for showing 559th DHGR/DGR/TEXT80 vertical column (retaining 560-pixel display width). + + +1.27.7.0 - 6 Aug 2018 +--------------------- +. [Bug #564] Fixed 'Save State on Exit' not working correctly when there's a Configuration change to the hardware. +. [Bug #556] Reverted default so that ALT+TAB is not hooked + - Support new command line switch: -hook-alt-tab to support hooking ALT+TAB. +. [Bug #558] Reverted default so that ALT GR's fake LEFT CONTROL is not hooked + - Support new command line switch: -hook-altgr-control to suppress ALR GR's fake LEFT CONTROL. + + +1.27.6.0 - 28 Jul 2018 +---------------------- +. [Bug #570] Fixed lag when repeat-stepping in debugger. +. [Bug #558] Fixed ClosedApple + not working (when using right ALT key). + + +1.27.5.0 - 24 Jun 2018 +---------------------- +. [Bug #567] Fixed Mockingboard/6522: Reading the 6522's IER now returns 0x80|IER. +. [Bug #556] Allow system key combinations to be read: Open Apple (left ALT) + ESC/SPACE/TAB. + - Also fixes #145, #198, #448. + - Support new command line switches: -no-hook-system-key, -alt-enter= + - Fix for save-state which wasn't correctly saving last key. +. [Bug #555] Reverted 1.27.4's "Fix for showing 559th DHGR vertical column". + - So 559th DHGR vertical column remains hidden (this is still a bug). +. [Bug #330] Any Key Down (AKD) wasn't working for the multi-key case. + + +1.27.4.0 - 26 May 2018 +---------------------- +. [Bug #555] Fix for showing 559th DHGR vertical column. + - But now an HGR HCOLOR=2 vertical line at column 0 is only 1 DHGR pixel wide. + - Fix TEXT80 to be aligned with DHGR. + - Fix FLASH in TEXT80 (the inverse aux-memory char would overwrite the main-memory char). +. [Change #554] Help: Added a new help page about AppleWin's SSC emulation. +. [Change #522] SSC: ZLINK not starting unless DCD is set. + - DCD state is now a mirror of DSR unless -dcd switch is used. + - Removed -dsr,-dtr switches, so -modem is now an alias for -dcd. +. [Bug #308] SSC: For TCP mode, support DSR, DCD & CTS status bits. +. SSC: Now DTR must also be set to enable interrupts (in addition to the respective Tx/Rx interrupt bit). +. SSC: Change DIPSW1's baud rate to 9600 (was 19200). + + +1.27.2.0 - 12 Apr 2018 +---------------------- +. [Change #522] SSC: Support ACIA's TX Empty interrupt for both COM and TCP modes. +. [Change #311] SSC: Support ACIA's CTS/RTS. +. [Bug #308] Fixed TCP mode which was only generating an IRQ for first byte received. +. SSC: Fixed reading DIPSW registers. +. SSC: Support ACIA's Program Reset (write to register 9). +. SSC: Improved logging for unsupported modes (Echo, Tx break signal). + + +1.27.1.0 - 5 Apr 2018 +--------------------- +. [Change #547] Improve UI and logging when PrintScreen key fails to register. +. [Change #546] Changing Config's 'Disk access speed' now doesn't trigger a restart. +. [Change #540] Config's Benchmark now reports "Pure CPU MHz" for both video update (as before) & full-speed (new). +. [Change #535] Help doc: added a description of Caps Lock behaviour. +. [Change #398] Added new command line switches: + -h1 : Start with hard disk 1 plugged-in (and auto power-on the Apple II). NB. Hard disk controller card gets enabled. + -h2 : Start with hard disk 2 plugged-in. NB. Hard disk controller card gets enabled. + -s7 empty : Remove the hard disk controller card from slot 7. +. [Bug #543] Swapping disks now doesn't swap drive's motor/spinning state. +. [Bug #537] Fix for failing DOS 3.2 INIT. + + +1.27.0.0 - 3 Feb 2018 +--------------------- +Full release that rolls-up all the changes and fixes from the 1.26.2 & 1.26.3 experiment builds. + +Changes (misc): +. [Change #428] Added Config Input option to use PC Joystick 1 Thumbstick 2 for emulated Joystick 2 + - play Nick Westgate's updated Robotron using gamepads with two analog thumbsticks, eg. Logitech F310, PS4 DualShock 4, Xbox controller +. [Change #528] Improved logging to log when Apple2 type changes +. [Change #469] New -no-printscreen-key switch to prevent the PrintScreen key from being registered. +. Swapping disks while a drive is on now warns and prompts if you still wish to do this instead of silently failing with no feedback. +. [PR #441] Update zlib to latest version 1.2.11 +. [PR #275] Attenuate speaker (and 8-bit DAC) output sample after 0.25s of inactivity +Full-screen: +. [Change #504] Full-screen: hide mouse pointer after 2 seconds of inactivity (and show again if mouse is moved) +. [Change #488] New -fs-height= switch. + - best: picks the highest resolution where the height is an integer multiple of (192*2) + - nnnn: select a specific resolution with height=nnnn pixels + Use to select a better resolution for full-screen mode. + NB. This changes the display resolution (and restores on exit). +. [Change #224] Added Config checkbox for 'Full-Screen: Show drive/keyboard status' +. [Change #492] UI fixes for full-screen & 2x windowed-mode +. [Bug #464] Fix for full-screen: bottom line missing when vertical resolution is 768 +DiskII/Hard disk: +. [Change #323] Skip hard disk boot by holding down the Open-Apple key during an Apple II restart +. [Bug #525] Fix to prevent stepper motor changing track when drive is off +. [Bug #125] Support formatting of DOS3.3/ProDOS for .dsk/.nib in authentic/enhanced disk modes + - includes support for Pascal formatting (#196) and Ultima I formatting (#338) +. [Bug #499] Flush current track (if dirty) before 'Send to CiderPress' +. [Bug #452] Fix for unmounted HD now gives "NO DEVICE CONNECTED" (before gave "I/O ERROR") . [Bug #389] Disk's write-protect detection mis-reporting when motor off -. [Bug #386] SSC: Experimental support for 6551's control bit: DTR via -dtr or -dtr-invert args - Experimental support for 6551's status bits: DCD and DSR via -dcd[-invert] and -dsr[-invert] args -. [Bug #383] "Enhanced disk speed" is very slow when debugger is active -. [Bug #217] Debugger G(o) command should use normal speed +. [Bug #387] Support for 40-track .nib files +Peripheral cards: +. [Bug #514] Emulator restart (or reset) wasn't clearing any pending Mousecard interrupt +. [Bug #496] Support polling of Mockingboard's & Phasor's 6522 IFR.Timer1 +. [Bug #486] Peripheral card's expansion ROM ($C800-CFFF, eg. SSC) wasn't being correctly restored from a save-state + - Resulting in regression: Mousecard crash to monitor (#495). +. [Bug #423] Full support for INTC8ROM soft switch (fixes transient a2audit.dsk & Bejeweled failures) +. [Bug #418] Fix for slot-3 ROM not returning floating bus when Uthernet card is enabled +. [Bug #413] Save-state: bug when saving >9 RAMWorks III 64K banks +. [Bug #386] SSC: Experimental support for 6551's DTR, DCD and DSR bits via -modem switch + - ie. -modem is shorthand for passing -dtr -dcd -dsr + - Experimental support for 6551's control bit: DTR via -dtr switch + - Experimental support for 6551's status bits: DCD and DSR via -dcd and -dsr switches +. [Bug #320] Mockingboard/Phasor: support 'inactive' function like real hardware +. [Bug #308] SSC ACIA Status register's interrupt bit not set when IRQ enabled and using TCP Port 1977 +Debugger: +. [Change #483] Debugger: Shift+Left mouse button to toggle 6502 Status flag bits +. [Change #462] Debugger: Changed Left mouse button (LMB) to Shift+LMB to toggle display items +. [Change #406] Debugger: Support LC and MMU status & updated Help doc +. [Change #269] When stepping, ESC no longer exits back to debugger (use F7, Pause keys or Debugger button instead). +. [Change #217] Debugger G(o) command should use normal speed . Debugger: Added new gg command: - command | run at normal speed? | run at full speed? | video quality | sound quality - ------------------------------------------------------------------------------------------- - g | yes | only if disk active, etc | precise | precise - gg | no | always | periodic | muted + command | run at normal speed? | run at full speed? | video quality | sound quality + ------------------------------------------------------------------------------------------- + g | yes | only if disk active, etc | precise | precise + gg | no | always | periodic | muted + +. [Bug #484] Debugger: Some corrections to APPLE2E.SYM +. [Bug #479, #476, #473] Debugger: Various UI and other fixes +. [Bug #460] Debugger: F2 whilst debugger active will immediately stop the drive spinning (allowing disk swap) +. [Bug #450] Persist debugger state across an F2 (reset machine state) +. [Bug #445] Debugger: BPM cmd: Support trigger on stack access for BRK,JSR,PLn,PHn,RTI,RTS +. [Bug #383] "Enhanced disk speed" is very slow when debugger is active +. [Bug #250] Debugger: When MODE_STEPPING, fix issue with disk LEDs staying on +Docs: +. [Change #477] Help doc: Document behaviour full-speed mode +. [Change #437] AppleWin.chm blocked from opening - delete the AppleWin.chm:Zone.Identifier ADS +. [Bug #417] Typos in Uthernet documentation +Fixes (other): +. [Bug #519] Support floating-bus in full-speed mode. Fixes Canyon Climber (#508), Oo-Topos (#532). +. [Bug #516] Internal video-mode was having PAGE2 permanently cleared (instead of just masked) when 80STORE was set. +. [Bug #456] Fix strange speaker clicks when changing configuration - DirectSound wasn't being uninitialised on a restart +. [Bug #415] Fix for not being able to select Pravets 82 +. [Bug #409] Fix for AppleWorks 5.1 flickering when booting (latent bug from 2006!) +. [Bug #405] Screen flicker in full-speed mode +. [Bug #403] PrintScreen from Color TV or B&W TV video modes is missing top line +. [Bug #392] Fixes for a2audit.dsk + - Resulting in regressions in LC support for Gemstone Warriors (#395), Quark Catalyst V3 and BeagleWrite (#400). +. [Bug #213] Pause not setting volume to zero 1.26.1.1 - 17 Feb 2017 @@ -56,6 +729,7 @@ Changes: . Remove unsupported PC speaker sound types . [PR #235] New start-up title screen by Paulo Garcia . [PR #233] Configuration Dialog->Disk tab: Buttons replaced with drop-down menu for select/eject by Paulo Garcia +. Removed CTRL+F9 functionality to cycle through AppleWin's character sets (ie. original Apple II charsets and clones' char-sets) Fixes: . [Bug #129] Tight loop page-flipping causing heavy CPU load (fixed by NTSC / cycle-accurate video emulation) @@ -516,8 +1190,8 @@ Beta builds for specific testers . Support for Pravets 82. Caps Lock serves as Lat/Cyr lock. The charset still needs a little fix (all characters have to be one row down). . Some partial support for Pravets 8A. Caps Lock serves as Lat/Cyr lock, and F10 serves as Caps Lock. In Pravets 8A mode the former behaviour of the F10 key is preserved as Ctrl+F10 (see Help/Keyboard for details). -Extended Basic and Miniassembler work, but there are still problems with the 8 bit charset ( [Parris] does not switch to latin characters). -Some keys have to be remapped, because currently they are not available (i.e. ). There is still the problem that there is not enough space for this key on the keyboard. +Extended Basic and Miniassembler work, but there are still problems with the 8 bit charset (Ïàðèñ [Parris] does not switch to latin characters). +Some keys have to be remapped, because currently they are not available (i.e. Ý). There is still the problem that there is not enough space for this key on the keyboard. . Added Send to CiderPress function via the popup menu of the drive buttons. 1.14.1.2 - 2 Dec 2007 (beta) diff --git a/Makefile b/Makefile index 672ed91..dfbd2d0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ -# Makefile for leapop 0.9b by Norbert de Jonge +# SPDX-License-Identifier: GPL-3.0-or-later +# Makefile for leapop 1.0 by Norbert de Jonge # # cppcheck --language=c --std=c99 --verbose leapop.c # Also try the line below with clang instead of gcc. # all: - gcc -O2 -Wno-unused-result -std=c99 -g -pedantic -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes leapop.c -o leapop `sdl2-config --cflags --libs` -lSDL2_ttf -lSDL2_image -lm + gcc -O2 -Wno-unused-result -std=c99 -g -pedantic -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes leapop.c -o leapop `sdl2-config --cflags --libs` -lSDL2_ttf -lSDL2_image -lm -Wno-format-truncation diff --git a/README.md b/README.md index f017586..29054c2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # leapop -A level editor of Prince of Persia for the Apple II and BBC Master. +A level editor of Prince of Persia for the Apple II, BBC Master, and C64. diff --git a/VICE/C64/basic b/VICE/C64/basic new file mode 100644 index 0000000..9e06923 Binary files /dev/null and b/VICE/C64/basic differ diff --git a/VICE/C64/c64hq.vpl b/VICE/C64/c64hq.vpl new file mode 100644 index 0000000..92f1840 --- /dev/null +++ b/VICE/C64/c64hq.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +0A 0A 0A + +# White +FF F8 FF + +# Red +85 1F 02 + +# Cyan +65 CD A8 + +# Purple +A7 3B 9F + +# Green +4D AB 19 + +# Blue +1A 0C 92 + +# Yellow +EB E3 53 + +# Orange +A9 4B 02 + +# Brown +44 1E 00 + +# Light Red +D2 80 74 + +# Dark Gray +46 46 46 + +# Medium Gray +8B 8B 8B + +# Light Green +8E F6 8E + +# Light Blue +4D 91 D1 + +# Light Gray +BA BA BA diff --git a/VICE/C64/c64mem.sym b/VICE/C64/c64mem.sym new file mode 100644 index 0000000..4042c7d --- /dev/null +++ b/VICE/C64/c64mem.sym @@ -0,0 +1,528 @@ +al ffa5 .kACPTR +al ffc6 .kCHKIN +al ffc9 .kCHKOUT +al ffcf .kCHRIN +al ffd2 .kCHROUT +al ffa8 .kCIOUT +al ff81 .kCINT +al ffe7 .kCLALL +al ffc3 .kCLOSE +al ffcc .kCLRCHN +al ffe4 .kGETIN +al fff3 .kIOBASE +al ff84 .kIOINIT +al ffb1 .kLISTEN +al ffd5 .kLOAD +al ff9c .kMEMBOT +al ff99 .kMEMTOP +al ffc0 .kOPEN +al fff0 .kPLOT +al ff87 .kRAMTAS +al ffde .kRDTIM +al ffb7 .kREADST +al ff8a .kRESTOR +al ffd8 .kSAVE +al ff9f .kSCNKEY +al ffed .kSCREEN +al ff93 .kSECOND +al ffba .kSETLFS +al ff90 .kSETMSF +al ffbd .kSETNAM +al ffdb .kSETTIM +al ffa2 .kSETTMO +al ffe1 .kSTOP +al ffb4 .kTALK +al ff96 .kTKSA +al ffea .kUDTIM +al ffae .kUNLSN +al ffab .kUNTLK +al ff8d .kVECTOR +al d000 .vSprite0X +al d001 .vSprite0Y +al d002 .vSprite1X +al d003 .vSprite1Y +al d004 .vSprite2X +al d005 .vSprite2Y +al d006 .vSprite3X +al d007 .vSprite3Y +al d008 .vSprite4X +al d009 .vSprite4Y +al d00a .vSprite5X +al d00b .vSprite5Y +al d00c .vSprite6X +al d00d .vSprite6Y +al d00e .vSprite7X +al d00f .vSprite7Y +al d010 .vSpriteXMSB +al d012 .vRaster +al d013 .vLightPenX +al d014 .vLightPenY +al d015 .vSprEnable +al d017 .vSprExpandY +al d018 .vMemControl +al d019 .vIRQFlags +al d01a .vIRQMasks +al d01b .vSprPriority +al d01c .vSprMCM +al d01d .vSprExpandX +al d01e .vSprSprColl +al d01f .vSprBackColl +al d020 .vBorderCol +al d021 .vBackgCol0 +al d022 .vBackgCol1 +al d023 .vBackgCol2 +al d024 .vBackgCol3 +al d025 .vSprMCMCol0 +al d026 .vSprMCMCol1 +al d027 .vSpr0Col +al d028 .vSpr1Col +al d029 .vSpr2Col +al d02a .vSpr3Col +al d02b .vSpr4Col +al d02c .vSpr5Col +al d02d .vSpr6Col +al d02e .vSpr7Col +al d400 .sVoc1FreqLo +al d401 .sVoc1FreqHi +al d402 .sVoc1PWidthLo +al d403 .sVoc1PWidthHi +al d404 .sVoc1Control +al d405 .sVoc1AttDec +al d406 .sVoc1SusRel +al d407 .sVoc2FreqLo +al d408 .sVoc2FreqHi +al d409 .sVoc2PWidthLo +al d40a .sVoc2PWidthHi +al d40b .sVoc2Control +al d40c .sVoc2AttDec +al d40d .sVoc2SusRel +al d40e .sVoc3FreqLo +al d40f .sVoc3FreqHi +al d410 .sVoc3PWidthLo +al d411 .sVoc3PWidthHi +al d412 .sVoc3Control +al d413 .sVoc3AttDec +al d414 .sVoc3SusRel +al d415 .sFiltFreqLo +al d416 .sFiltFreqHi +al d417 .sFiltControl +al d418 .sFiltMode +al d419 .sADC1 +al d41a .sADC2 +al d41b .sRandom +al d41c .sVoc3Output +al a000 .bRESTART +al a00c .bSTMDSP +al a052 .bFUNDSP +al a080 .bOPTAB +al a09e .bRESLST +al a129 .bMSCLST +al a140 .bOPLIST +al a14d .bFUNLST +al a19e .bERRTAB +al a328 .bERRPTR +al a364 .bOKK +al a38a .bFNDFOR +al a3b8 .bBLTU +al a3fb .bGETSTK +al a408 .bREASON +al a435 .bOMERR +al a437 .bERROR +al a469 .bERRFIN +al a474 .bREADY +al a480 .bMAIN +al a49c .bMAIN1 +al a4a2 .bINSLIN +al a533 .bLINKPRG +al a560 .bINLIN +al a579 .bCRUNCH +al a613 .bFNDLIN +al a642 .bSCRTCH +al a65e .bCLEAR +al a68e .bSTXPT +al a69c .bLIST +al a717 .bQPLOP +al a742 .bFOR +al a7ae .bNEWSTT +al a7c4 .bCKEOL +al a7e1 .bGONE +al a7ed .bGONE3 +al a81d .bRESTOR +al a82c .bSTOP +al a857 .bCONT +al a871 .bRUN +al a883 .bGOSUB +al a8a0 .bGOTO +al a8d2 .bRETURN +al a8f8 .bDATA +al a906 .bDATAN +al a928 .bIF +al a93b .bREM +al a8a0 .bONGOTO +al a96b .bLINGET +al a9a5 .bLET +al a9c4 .bPUTINT +al a9d6 .bPTFLPT +al a9d9 .bPUTSTR +al a9e3 .bPUTTIM +al aa2c .bGETSPT +al aa80 .bPRINTN +al aa86 .bCMD +al aa9a .bSTRDON +al aaa0 .bPRINT +al aab8 .bVAROP +al aaca .bSTREND +al aad7 .bCRDO +al aae8 .bCOMPRT +al ab1e .bSTROUT +al ab3b .bOUTSPC +al ab4d .bDOAGIN +al ab7b .bGET +al aba5 .bINPUTN +al abbf .bINPUT +al abea .bBUFFUL +al abf9 .bQINLIN +al ac06 .bREAD +al ac35 .bRGDET +al acfc .bEXINT +al ad1e .bNEXT +al ad61 .bDONEXT +al ad8a .bFRMNUM +al ad9e .bFRMEVL +al ae83 .bEVAL +al aea8 .bPIVAL +al aead .bQDOT +al aef1 .bOARCHK +al aef7 .bCHKclose +al aefa .bCHKopen +al aefd .bCHKCMA +al af08 .bSYNERR +al af0d .bDOMIN +al af14 .bRSVVAR +al af28 .bISVAR +al af48 .bTISASC +al afa7 .bISFUN +al afb1 .bSTRFUN +al afd1 .bNUMFUN +al afe6 .bOROP +al b016 .bDOREL +al b01b .bNUMREL +al b02e .bSTRREL +al b07e .bDIM +al b08b .bPTRGET +al b0e7 .bORDVAR +al b113 .bISLETC +al b11d .bNOTFNS +al b128 .bNOTEVL +al b194 .bARYGET +al b1a5 .bN32768 +al b1aa .bFACINX +al b1b2 .bINTIDX +al b1bf .bAYINT +al b1d1 .bISARY +al b218 .bFNDARY +al b245 .bBSERR +al b248 .bIQERR +al b24d .bRAERR +al b261 .bNOTFDD +al b30e .bINLPN2 +al b34c .bUMULT +al b37d .bFRE +al b391 .bGIVAYF +al b39e .bPOS +al b3a6 .bERRDIR +al b3ac .bUFERR +al b3e1 .bGETFNM +al b3f4 .bFNDOER +al b465 .bSTRD +al b487 .bSTRLIT +al b4d5 .bPUTNW1 +al b4f4 .bGETSPA +al b526 .bGARBAG +al b5bd .bDVARS +al b606 .bGRBPAS +al b63d .bCAT +al b67a .bMOVINS +al b6a3 .bFRESTR +al b6db .bFREFAC +al b6ec .bCHRD +al b700 .bLEFTD +al b72c .bRIGHTD +al b737 .bMIDD +al b761 .bPREAM +al b77c .bLEN +al b782 .bLEN1 +al b78b .bASC +al b79b .bGTBYTC +al b7ad .bVAL +al b7b5 .bSTRVAL +al b7eb .bGETNUM +al b7f7 .bGETADR +al b80d .bPEEK +al b824 .bPOKE +al b82d .bWAIT +al b849 .bFADDH +al b850 .bFSUB +al b862 .bFADD5 +al b867 .bFADD +al b947 .bNEGFAC +al b97e .bOVERR +al b983 .bMULSHF +al b9bc .bFPTABL +al b9ea .bLOG +al ba28 .bFMULT +al ba59 .bMULPLY +al ba8c .bCONUPK +al bab7 .bMULDIV +al bad4 .bMLDVEX +al bae2 .bMUL10 +al baf9 .bTENC +al bafe .bDIV10 +al bb07 .bFDIV +al bb0f .bFDIVT +al bba2 .bMOVFM +al bbc7 .bMOV2F +al bbfc .bMOVFA +al bc0c .bMOVAF +al bc1b .bROUND +al bc2b .bSIGN +al bc39 .bSGN +al bc58 .bABS +al bc5b .bFCOMP +al bc9b .bQINT +al bccc .bINT +al bcf3 .bFIN +al bdb3 .bN0999 +al bdc2 .bINPRT +al bddd .bFOUT +al be68 .bFOUTIM +al bf11 .bFHALF +al bf71 .bSQR +al bf7b .bFPWRT +al bfb4 .bNEGOP +al bfbf .bLOGEB2 +al bfed .bEXP +al e043 .bPOLYX +al e08d .bRMULC +al e097 .bRND +al e0f9 .bBIOERR +al e10c .bCHOUT +al e112 .bCHIN +al e118 .bCKOUT +al e11e .bCKIN +al e124 .bGETIN +al e12a .bSYS +al e156 .bSAVET +al e165 .bVERFYT +al e1be .bOPENT +al e1c7 .bCLOSET +al e1d4 .bSLPARA +al e200 .bCOMBYT +al e206 .bDEFLT +al e20e .bCMMERR +al e219 .bOCPARA +al e264 .bCOS +al e26b .bSIN +al e2b4 .bTAN +al e2e0 .bPI2 +al e30e .bATN +al e33e .bATNCON +al 0000 .zD6510 +al 0001 .zR6510 +al 0003 .zADRAY1 +al 0005 .zADRAY2 +al 0007 .zCHARAC +al 0008 .zENDCHR +al 0007 .zINTEGR +al 0009 .zTRMPOS +al 000a .zVERCK +al 000b .zCOUNT +al 000c .zDIMFLG +al 000d .zVALTYP +al 000e .zINTFLG +al 000f .zGARBFL +al 0011 .zSUBFLG +al 0012 .zTANSGN +al 001e .zCHANNL +al 0014 .zLINNUM +al 0016 .zTEMPPT +al 0017 .zLASTPT +al 0019 .zTEMPST +al 0022 .zINDEX +al 0024 .zINDEX2 +al 0026 .zRESHO +al 002b .zTXTTAB +al 002d .zVARTAB +al 002f .zARYTAB +al 0031 .zSTREND +al 0033 .zFRETOP +al 0035 .zFRESPC +al 0037 .zMEMSIZ +al 0039 .zCURLIN +al 003b .zOLDLIN +al 003d .zOLDTXT +al 003f .zDATLIN +al 0041 .zDATPTR +al 0041 .zINPPTR +al 0045 .zVARNAM +al 0047 .zVARPNT +al 0049 .zFORPNT +al 004b .zVARTXT +al 004d .zOPMASK +al 004e .zTEMPF3 +al 0053 .zFOUR6 +al 0054 .zJMPER +al 0057 .zTEMPF1 +al 005c .zTEMPF2 +al 0061 .zFACEXP +al 0062 .zFACHO +al 0066 .zFACSGN +al 0067 .zSGNFLG +al 0068 .zBITS +al 0069 .zARGEXP +al 006a .zARGHO +al 006e .zARGSGN +al 006f .zARISGN +al 0070 .zFACOV +al 0071 .zFBUFPT +al 0073 .zCHRGET +al 0079 .zCHRGOT +al 007a .zTXTPTR +al 008b .zRNDX +al 0090 .zSTATUS +al 0091 .zSTKEY +al 0092 .zSVXT +al 0093 .zVERCKK +al 0094 .zC3PO +al 0095 .zBSOUR +al 0096 .zSYNO +al 0097 .zTEMPX +al 0098 .zLDTND +al 0099 .zDFLTN +al 009a .zDFLTO +al 009b .zPRTY +al 009c .zDPSW +al 009d .zNSGFLG +al 009e .zPTR1 +al 009f .zPTR2 +al 00a0 .zTIME +al 00a3 .zTSFCNT +al 00a4 .zTBTCNT +al 00a5 .zCNTDN +al 00a6 .zBUFPNT +al 00a7 .zINBIT +al 00a8 .zBITC1 +al 00a9 .zRINONE +al 00aa .zRIDATA +al 00ab .zRIPRTY +al 00ac .zSAL +al 00ae .zEAL +al 00b0 .zCMPO +al 00b2 .zTAPE1 +al 00b4 .zBITTS +al 00b5 .zNXTBIT +al 00b6 .zRODATA +al 00b7 .zFNLEN +al 00b8 .zLA +al 00b9 .zSA +al 00ba .zFA +al 00bb .zFNADR +al 00bd .zROPRTY +al 00be .zFSBLK +al 00bf .zMYCH +al 00c0 .zCAS1 +al 00c1 .zSTAL +al 00c3 .zMEMUSS +al 00c5 .zLSTX +al 00c6 .zNDX +al 00c7 .zRVS +al 00c8 .zINDX +al 00c9 .zLXSP +al 00cb .zSFDX +al 00cc .zBLNSW +al 00cd .zBLNCT +al 00ce .zGDBLN +al 00cf .zBLNON +al 00d0 .zCRSW +al 00d1 .zPNT +al 00d3 .zPNTR +al 00d4 .zQTSW +al 00d5 .zLNMX +al 00d6 .zTBLX +al 00d7 .zSCHAR +al 00d8 .zINSRT +al 00d9 .zLDTB1 +al 00f3 .zUSER +al 00f5 .zKEYTAB +al 00f7 .zRIBUF +al 00f9 .zROBUF +al 00fb .zFREKXP +al 00ff .zASCWRK +al 0100 .lSTACK +al 0200 .lBUF +al 0259 .lLAT +al 0263 .lFAT +al 026d .lSAT +al 0277 .lKEYD +al 0281 .lMEMSTR +al 0283 .lMEMSIZ +al 0285 .lTIMOUT +al 0286 .lCOLOR +al 0287 .lGDCOL +al 0288 .lHIBASE +al 0289 .lXMAX +al 028a .lRPTFLG +al 028b .lKOUNT +al 028c .lDELAY +al 028d .lSHFLAG +al 028e .lLSTSHF +al 028f .lKEYLOG +al 0291 .lMODE +al 0292 .lAUTODN +al 0293 .lM51CTR +al 0294 .lM51CDR +al 0295 .lM51AJB +al 0297 .lRSSTAT +al 0298 .lBITNUM +al 0299 .lBAUDOF +al 029b .lRIDBE +al 029c .lRIDBS +al 029d .lRODBS +al 029e .lRODBE +al 029f .lIRQTMP +al 02a1 .lENABL +al 02a2 .lTODSNS +al 02a3 .lTRDTMP +al 02a4 .lTD1IRQ +al 02a5 .lTLNIDX +al 02a6 .lTVSFLG +al 0300 .lIERROR +al 0302 .lIMAIN +al 0304 .lICRNCH +al 0306 .lIQPLOP +al 0308 .lIGONE +al 030a .lIEVAL +al 030c .lSAREG +al 030d .lSXREG +al 030e .lSYREG +al 0310 .lUSRPOK +al 0311 .lUSRADD +al 0314 .lCINV +al 0316 .lCNBINV +al 0318 .lNMINV +al 031a .lIOPEN +al 031c .lICLOSE +al 031e .lICHKIN +al 0320 .lICKOUT +al 0322 .lICLRCH +al 0324 .lIBASIN +al 0326 .lIBSOUT +al 0328 .lISTOP +al 032a .lIGETIN +al 032c .lICLALL +al 032e .lUSRCMD +al 0330 .lILOAD +al 0332 .lISAVE +al 033c .lTBUFFR +al 0400 .lVICSCN +al 07f8 .lSPNTRN diff --git a/VICE/C64/c64s.vpl b/VICE/C64/c64s.vpl new file mode 100644 index 0000000..1618346 --- /dev/null +++ b/VICE/C64/c64s.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +00 00 00 + +# White +FC FC FC + +# Red +A8 00 00 + +# Cyan +54 FC FC + +# Purple +A8 00 A8 + +# Green +00 A8 00 + +# Blue +00 00 A8 + +# Yellow +FC FC 00 + +# Orange +A8 54 00 + +# Brown +80 2C 00 + +# Light Red +FC 54 54 + +# Dark Gray +54 54 54 + +# Medium Gray +80 80 80 + +# Light Green +54 FC 54 + +# Light Blue +54 54 FC + +# Light Gray +A8 A8 A8 diff --git a/VICE/C64/ccs64.vpl b/VICE/C64/ccs64.vpl new file mode 100644 index 0000000..533e462 --- /dev/null +++ b/VICE/C64/ccs64.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +10 10 10 + +# White +FF FF FF + +# Red +E0 40 40 + +# Cyan +60 FF FF + +# Purple +E0 60 E0 + +# Green +40 E0 40 + +# Blue +40 40 E0 + +# Yellow +FF FF 40 + +# Orange +E0 A0 40 + +# Brown +9C 74 48 + +# Light Red +FF A0 A0 + +# Dark Gray +54 54 54 + +# Medium Gray +88 88 88 + +# Light Green +A0 FF A0 + +# Light Blue +A0 A0 FF + +# Light Gray +C0 C0 C0 diff --git a/VICE/C64/chargen b/VICE/C64/chargen new file mode 100644 index 0000000..191ac46 Binary files /dev/null and b/VICE/C64/chargen differ diff --git a/VICE/C64/cjam.vpl b/VICE/C64/cjam.vpl new file mode 100644 index 0000000..601fc71 --- /dev/null +++ b/VICE/C64/cjam.vpl @@ -0,0 +1,55 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# +# taken from http://jamontoads.net/p/lumachroma.html + +# Black +00 00 00 + +# White +FF FF FF + +# Red +7d 20 2c + +# Cyan +4f b3 a5 + +# Purple +84 25 8c + +# Green +33 98 40 + +# Blue +2a 1b 9d + +# Yellow +bf d0 4a + +# Orange +7f 41 0d + +# Brown +4c 2e 00 + +# Light Red +b4 4f 5c + +# Dark Gray +3c 3c 3c + +# Medium Gray +64 64 64 + +# Light Green +7c e5 87 + +# Light Blue +63 51 db + +# Light Gray +93 93 93 diff --git a/VICE/C64/colodore.vpl b/VICE/C64/colodore.vpl new file mode 100644 index 0000000..4909f1d --- /dev/null +++ b/VICE/C64/colodore.vpl @@ -0,0 +1,40 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# +# VIC-II palette based on http://www.colodore.com/ + +# Black +00 00 00 +# White +FF FF FF +# Red +96 28 2e +# Cyan +5b d6 ce +# Purple +9f 2d ad +# Green +41 b9 36 +# Blue +27 24 c4 +# Yellow +ef f3 47 +# Orange +9f 48 15 +# Brown +5e 35 00 +# Light Red +da 5f 66 +# Dark Gray +47 47 47 +# Medium Gray +78 78 78 +# Light Green +91 ff 84 +# Light Blue +68 64 ff +# Light Gray +ae ae ae diff --git a/VICE/C64/community-colors.vpl b/VICE/C64/community-colors.vpl new file mode 100644 index 0000000..27db04a --- /dev/null +++ b/VICE/C64/community-colors.vpl @@ -0,0 +1,25 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# +# colors taken from "C64 Community Colors V1.2a" palette, see +# https://p1x3l.net/36/c64-community-colors-theor/ + +00 00 00 +ff ff ff +af 2a 29 +62 d8 cc +b0 3f b6 +4a c6 4a +37 39 c4 +e4 ed 4e +b6 59 1c +68 38 08 +ea 74 6c +4d 4d 4d +84 84 84 +a6 fa 9e +70 7c e6 +b6 b6 b5 diff --git a/VICE/C64/deekay.vpl b/VICE/C64/deekay.vpl new file mode 100644 index 0000000..431bb5f --- /dev/null +++ b/VICE/C64/deekay.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +00 00 00 + +# White +FF FF FF + +# Red +88 20 00 + +# Cyan +68 D0 A8 + +# Purple +A8 38 A0 + +# Green +50 B8 18 + +# Blue +18 10 90 + +# Yellow +F0 E8 58 + +# Orange +A0 48 00 + +# Brown +47 2B 1B + +# Light Red +C8 78 70 + +# Dark Gray +48 48 48 + +# Medium Gray +80 80 80 + +# Light Green +98 FF 98 + +# Light Blue +50 90 D0 + +# Light Gray +B8 B8 B8 diff --git a/VICE/C64/default.vrs b/VICE/C64/default.vrs new file mode 100644 index 0000000..a20ae14 --- /dev/null +++ b/VICE/C64/default.vrs @@ -0,0 +1,10 @@ +KernalName="kernal" +ChargenName="chargen" +BasicName="basic" +CartridgeType=-1 +CartridgeFile="" +DosName2031="dos2031" +DosName1540="dos1540" +DosName1541="dos1541" +DosName1571="dos1571" +DosName1581="dos1581" diff --git a/VICE/C64/edkernal b/VICE/C64/edkernal new file mode 100644 index 0000000..5c51505 Binary files /dev/null and b/VICE/C64/edkernal differ diff --git a/VICE/C64/frodo.vpl b/VICE/C64/frodo.vpl new file mode 100644 index 0000000..1cc8c34 --- /dev/null +++ b/VICE/C64/frodo.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +00 00 00 + +# White +FF FF FF + +# Red +CC 00 00 + +# Cyan +00 FF CC + +# Purple +FF 00 FF + +# Green +00 CC 00 + +# Blue +00 00 CC + +# Yellow +FF FF 00 + +# Orange +FF 88 00 + +# Brown +88 44 00 + +# Light Red +FF 88 88 + +# Dark Gray +44 44 44 + +# Medium Gray +88 88 88 + +# Light Green +88 FF 88 + +# Light Blue +88 88 FF + +# Light Gray +CC CC CC diff --git a/VICE/C64/godot.vpl b/VICE/C64/godot.vpl new file mode 100644 index 0000000..2448393 --- /dev/null +++ b/VICE/C64/godot.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +00 00 00 + +# White +FF FF FF + +# Red +88 00 00 + +# Cyan +AA FF EE + +# Purple +CC 44 CC + +# Green +00 CC 55 + +# Blue +00 00 AA + +# Yellow +EE EE 77 + +# Orange +DD 88 55 + +# Brown +66 44 00 + +# Light Red +FE 77 77 + +# Dark Gray +33 33 33 + +# Medium Gray +77 77 77 + +# Light Green +AA FF 66 + +# Light Blue +00 88 FF + +# Light Gray +BB BB BB diff --git a/VICE/C64/gskernal b/VICE/C64/gskernal new file mode 100644 index 0000000..0e39ec4 Binary files /dev/null and b/VICE/C64/gskernal differ diff --git a/VICE/C64/gtk3-hotkeys-mac.vhk b/VICE/C64/gtk3-hotkeys-mac.vhk new file mode 100644 index 0000000..b9f6435 --- /dev/null +++ b/VICE/C64/gtk3-hotkeys-mac.vhk @@ -0,0 +1,78 @@ +# VICE Gtk3 Hotkeys for x64/x64sc, MacOS version +# +# Author: Bas Wassink +# Updated: 2021-12-30 +# +# See doc/gtk3-hotkeys.md for documentation on the syntax of hotkeys files. +# See src/arch/gtk3/uiactions.h for a list of action names. + +# Disable debugging +!debug disable + +# Clear hotkeys +!clear + + +# +# Hotkey mappings, in the order of the menu items. +# + + +# "File" - Smart attach +smart-attach a + +# "File" - drive items +!include $VICEDIR/common/gtk3-hotkeys-drive-mac.vhk + +# "File" - fliplist items +!include $VICEDIR/common/gtk3-hotkeys-fliplist-mac.vhk + +# "File" - tape items +!include $VICEDIR/common/gtk3-hotkeys-datasette1-mac.vhk + +# "File" - cartridge items +!include $VICEDIR/common/gtk3-hotkeys-cartridge-mac.vhk + +# "File" - monitor, reset, quit +monitor-open h +reset-soft F9 +reset-hard F12 +quit q + + +# "Edit" - copy/paste +edit-copy Delete +edit-paste Insert + + +# "Snapshot" - event history recording, capturing media, screenshots etc. +!include $VICEDIR/common/gtk3-hotkeys-snapshot-mac.vhk + + +# "Preferences - host display stuff +fullscreen-toggle d +restore-display r +fullscreen-decorations-toggle b + +# "Preferences - run control +warp-mode-toggle w +pause-toggle p +advance-frame p + + +# "Preferences" - joystick, mouse +mouse-grab-toggle m +swap-controlport-toggle j +keyset-joystick-toggle j + +# Settings dialog, load, save, default +!include $VICEDIR/common/gtk3-hotkeys-settings-mac.vhk + + +# "Debug" menu items +# TODO: implement some kind of `!ifdef DEBUG` to conditionally include this +!include $VICEDIR/common/gtk3-hotkeys-debug-mac.vhk + + +# "Help" menu items +!include $VICEDIR/common/gtk3-hotkeys-help-mac.vhk diff --git a/VICE/C64/gtk3-hotkeys.vhk b/VICE/C64/gtk3-hotkeys.vhk new file mode 100644 index 0000000..a7fd4dd --- /dev/null +++ b/VICE/C64/gtk3-hotkeys.vhk @@ -0,0 +1,78 @@ +# VICE Gtk3 Hotkeys for x64/x64sc +# +# Author: Bas Wassink +# Updated: 2021-10-29 +# +# See doc/gtk3-hotkeys.md for documentation on the syntax of hotkeys files. +# See src/arch/gtk3/uiactions.h for a list of action names. + +# Disable debugging +!debug disable + +# Clear hotkeys +!clear + + +# +# Hotkey mappings, in the order of the menu items. +# + + +# "File" - Smart attach +smart-attach a + +# "File" - drive items +!include $VICEDIR/common/gtk3-hotkeys-drive.vhk + +# "File" - fliplist items +!include $VICEDIR/common/gtk3-hotkeys-fliplist.vhk + +# "File" - tape items +!include $VICEDIR/common/gtk3-hotkeys-datasette1.vhk + +# "File" - cartridge items +!include $VICEDIR/common/gtk3-hotkeys-cartridge.vhk + +# "File" - monitor, reset, quit +monitor-open h +reset-soft F9 +reset-hard F12 +quit q + + +# "Edit" - copy/paste +edit-copy Delete +edit-paste Insert + + +# "Snapshot" - event history recording, capturing media, screenshots etc. +!include $VICEDIR/common/gtk3-hotkeys-snapshot.vhk + + +# "Preferences - host display stuff +fullscreen-toggle d +restore-display r +fullscreen-decorations-toggle b + +# "Preferences - run control +warp-mode-toggle w +pause-toggle p +advance-frame p + + +# "Preferences" - joystick, mouse +mouse-grab-toggle m +swap-controlport-toggle j +keyset-joystick-toggle j + +# Settings dialog, load, save, default +!include $VICEDIR/common/gtk3-hotkeys-settings.vhk + + +# "Debug" menu items +# TODO: implement some kind of `!ifdef DEBUG` to conditionally include this +!include $VICEDIR/common/gtk3-hotkeys-debug.vhk + + +# "Help" menu items +!include $VICEDIR/common/gtk3-hotkeys-help.vhk diff --git a/VICE/C64/gtk3-winvice-legacy.vhk b/VICE/C64/gtk3-winvice-legacy.vhk new file mode 100644 index 0000000..0e90ad1 --- /dev/null +++ b/VICE/C64/gtk3-winvice-legacy.vhk @@ -0,0 +1,88 @@ +# Gtk3 hotkeys file for C64SC +# +# This is a preliminary WIP definition that restores the old hotkeys +# as used in WinVICE until 3.2 +# +# This file will get reworked into a "patch" to the GTK hotkeys, once the !UNDEF +# feature is implemented. + +#!include $VICEDIR/C64/gtk3-hotkeys.vhk + +!debug disable +!clear + +# first the hand full hotkeys that were different in the Windows UI: + +#!UNDEF quit +#!UNDEF reset-soft +#!UNDEF reset-hard +#!UNDEF fliplist-previous +#!UNDEF monitor-open +#!UNDEF snapshot-quickload +#!UNDEF snapshot-quicksave +#!UNDEF history-milestone-set +#!UNDEF history-milestone-reset +#!UNDEF media-record +#!UNDEF mouse-grab-toggle +#!UNDEF fliplist-clear +#!UNDEF advance-frame + +quit x +reset-soft r +reset-hard r +fliplist-previous b +monitor-open m +snapshot-quickload l +snapshot-quicksave s +history-milestone-set g +history-milestone-reset h +media-record c +mouse-grab-toggle q +fliplist-clear a +advance-frame KP_Add + +# the following ones did not have a hotkey in the Windows UI + +#!UNDEF restore-display +#!UNDEF fullscreen-decorations-toggle +#!UNDEF snapshot-load +#!UNDEF snapshot-save +#!UNDEF cart-attach +#!UNDEF smart-attach + +#restore-display r +#fullscreen-decorations-toggle b +#snapshot-load l +#snapshot-save s +#cart-attach c +#smart-attach a + +# The rest of the hotkeys were exactly the same as in the GTK port (all of the +# following can be removed later) + +drive-attach-8:0 8 +drive-attach-9:0 9 +drive-attach-10:0 0 +drive-attach-11:0 1 +drive-detach-8:0 8 +drive-detach-9:0 9 +drive-detach-10:0 0 +drive-detach-11:0 1 +fliplist-add i +fliplist-remove k +fliplist-next n +tape-attach-1 t +tape-detach-1 t +cart-detach c +cart-freeze z +edit-copy Delete +edit-paste Insert +media-stop s +screenshot-quicksave Pause +fullscreen-toggle d +warp-mode-toggle w +pause-toggle p +swap-controlport-toggle j +swap-userport-toggle j +settings-dialog o +settings-default o diff --git a/VICE/C64/jpchrgen b/VICE/C64/jpchrgen new file mode 100644 index 0000000..ca88b75 Binary files /dev/null and b/VICE/C64/jpchrgen differ diff --git a/VICE/C64/jpkernal b/VICE/C64/jpkernal new file mode 100644 index 0000000..a3ac4f5 Binary files /dev/null and b/VICE/C64/jpkernal differ diff --git a/VICE/C64/kernal b/VICE/C64/kernal new file mode 100644 index 0000000..666370a Binary files /dev/null and b/VICE/C64/kernal differ diff --git a/VICE/C64/palette.vpl b/VICE/C64/palette.vpl new file mode 100644 index 0000000..a6c5887 --- /dev/null +++ b/VICE/C64/palette.vpl @@ -0,0 +1,40 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# +# VIC-II palette created by PAL/Offence + +# Black +00 00 00 +# White +d5 d5 d5 +# Red +72 35 2c +# Cyan +65 9f a6 +# Purple +73 3a 91 +# Green +56 8d 35 +# Blue +2e 23 7d +# Yellow +ae b7 5e +# Orange +77 4f 1e +# Brown +4b 3c 00 +# Light Red +9c 63 5a +# Dark Gray +47 47 47 +# Medium Gray +6b 6b 6b +# Light Green +8f c2 71 +# Light Blue +67 5d b6 +# Light Gray +8f 8f 8f diff --git a/VICE/C64/pc64.vpl b/VICE/C64/pc64.vpl new file mode 100644 index 0000000..560f9f1 --- /dev/null +++ b/VICE/C64/pc64.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue Diter +# + +# Black +21 21 21 + +# Wite +FF FF FF + +# Red +B5 21 21 + +# Cyan +73 FF FF + +# Purple +B5 21 B5 + +# Green +21 B5 21 + +# Blue +21 21 B5 + +# Yellow +FF FF 21 + +# Orange +B5 73 21 + +# Brown +94 42 21 + +# Ligt Red +FF 73 73 + +# Dark Gray +73 73 73 + +# Medium Gray +94 94 94 + +# Ligt Green +73 FF 73 + +# Ligt Blue +73 73 FF + +# Ligt Gray +B5 B5 B5 diff --git a/VICE/C64/pepto-ntsc-sony.vpl b/VICE/C64/pepto-ntsc-sony.vpl new file mode 100644 index 0000000..9743a8e --- /dev/null +++ b/VICE/C64/pepto-ntsc-sony.vpl @@ -0,0 +1,57 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# this palette was calculated for NTSC according to http://www.pepto.de/projects/colorvic/ +# using the SONY CXA2025AS US decoder matrix - this looks noteably different to PAL + +# Black +00 00 00 + +# White +FF FF FF + +# Red +7C 35 2B + +# Cyan +5A A6 B1 + +# Purple +69 41 85 + +# Green +5D 86 43 + +# Blue +21 2E 78 + +# Yellow +CF BE 6F + +# Orange +89 4A 26 + +# Brown +5B 33 0 + +# Light Red +AF 64 59 + +# Dark Gray +43 43 43 + +# Medium Gray +6B 6B 6B + +# Light Green +A0 CB 84 + +# Light Blue +56 65 B3 + +# Light Gray +95 95 95 diff --git a/VICE/C64/pepto-ntsc.vpl b/VICE/C64/pepto-ntsc.vpl new file mode 100644 index 0000000..7fd325a --- /dev/null +++ b/VICE/C64/pepto-ntsc.vpl @@ -0,0 +1,57 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# this palette was calculated for NTSC according to http://www.pepto.de/projects/colorvic/ +# using the FCC sanctioned decoder matrix - this is almost identical to the PAL palette! + +# Black +0 0 0 + +# White +FF FF FF + +# Red +67 37 2B + +# Cyan +70 A3 B1 + +# Purple +6F 3D 86 + +# Green +58 8C 42 + +# Blue +34 28 79 + +# Yellow +B7 C6 6E + +# Orange +6F 4E 25 + +# Brown +42 38 0 + +# Light Red +99 66 59 + +# Dark Gray +43 43 43 + +# Medium Gray +6B 6B 6B + +# Light Green +9A D1 83 + +# Light Blue +6B 5E B5 + +# Light Gray +95 95 95 diff --git a/VICE/C64/pepto-pal.vpl b/VICE/C64/pepto-pal.vpl new file mode 100644 index 0000000..09e54a8 --- /dev/null +++ b/VICE/C64/pepto-pal.vpl @@ -0,0 +1,56 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# this palette was calculated for PAL according to http://www.pepto.de/projects/colorvic/ + +# Black +00 00 00 + +# White +FF FF FF + +# Red +68 37 2b + +# Cyan +70 a4 b2 + +# Purple +6f 3d 86 + +# Green +58 8d 43 + +# Blue +35 28 79 + +# Yellow +b8 c7 6f + +# Orange +6f 4f 25 + +# Brown +43 39 00 + +# Light Red +9a 67 59 + +# Dark Gray +44 44 44 + +# Medium Gray +6c 6c 6c + +# Light Green +9a d2 84 + +# Light Blue +6c 5e b5 + +# Light Gray +95 95 95 diff --git a/VICE/C64/pepto-palold.vpl b/VICE/C64/pepto-palold.vpl new file mode 100644 index 0000000..73bf9a5 --- /dev/null +++ b/VICE/C64/pepto-palold.vpl @@ -0,0 +1,42 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# this palette was calculated for PAL according to http://www.pepto.de/projects/colorvic/ +# using the 5 lumas present in R1 chips + +# Black +00 00 00 +# White +ff ff ff +# Red +58 29 1d +# Cyan +91 c6 d5 +# Purple +91 5c a8 +# Green +58 8d 43 +# Blue +35 28 79 +# Yellow +b8 c7 6f +# Orange +91 6f 43 +# Brown +43 39 00 +# Light Red +9a 67 59 +# Dark Gray +35 35 35 +# Medium Gray +74 74 74 +# Light Green +9a d2 84 +# Light Blue +74 66 be +# Light Gray +b8 b8 b8 diff --git a/VICE/C64/pixcen.vpl b/VICE/C64/pixcen.vpl new file mode 100644 index 0000000..277afa2 --- /dev/null +++ b/VICE/C64/pixcen.vpl @@ -0,0 +1,40 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# +# VIC-II default palette taken from the pixcen editor + +# Black +00 00 00 +# White +FF FF FF +# Red +89 40 36 +# Cyan +7a bf c7 +# Purple +8a 46 ae +# Green +68 a9 41 +# Blue +3e 31 a2 +# Yellow +d0 dc 71 +# Orange +90 5f 25 +# Brown +5c 47 00 +# Light Red +bb 77 6d +# Dark Gray +55 55 55 +# Medium Gray +80 80 80 +# Light Green +ac ea 88 +# Light Blue +7c 70 da +# Light Gray +ab ab ab diff --git a/VICE/C64/ptoing.vpl b/VICE/C64/ptoing.vpl new file mode 100644 index 0000000..92d1af7 --- /dev/null +++ b/VICE/C64/ptoing.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +00 00 00 + +# White +FF FF FF + +# Red +8C 3E 34 + +# Cyan +7A BF C7 + +# Purple +8D 47 B3 + +# Green +68 A9 41 + +# Blue +3E 31 A2 + +# Yellow +D0 DC 71 + +# Orange +90 5F 25 + +# Brown +57 42 00 + +# Light Red +BB 77 6D + +# Dark Gray +54 54 54 + +# Medium Gray +80 80 80 + +# Light Green +AC EA 88 + +# Light Blue +7C 70 DA + +# Light Gray +AB AB AB diff --git a/VICE/C64/rgb.vpl b/VICE/C64/rgb.vpl new file mode 100644 index 0000000..3165172 --- /dev/null +++ b/VICE/C64/rgb.vpl @@ -0,0 +1,56 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# this palette contains fully saturated RGB colors, mostly useful for testing + +# Black +00 00 00 + +# White +FF FF FF + +# Red +FF 00 00 + +# Cyan +00 FF FF + +# Purple +FF 00 FF + +# Green +00 FF 00 + +# Blue +00 00 FF + +# Yellow +FF FF 00 + +# Orange +FF 80 00 + +# Brown +80 40 00 + +# Light Red +FF 80 80 + +# Dark Gray +40 40 40 + +# Medium Gray +80 80 80 + +# Light Green +80 FF 80 + +# Light Blue +80 80 FF + +# Light Gray +C0 C0 C0 diff --git a/VICE/C64/sdl-hotkeys-vsid.vhk b/VICE/C64/sdl-hotkeys-vsid.vhk new file mode 100644 index 0000000..cfb2ef2 --- /dev/null +++ b/VICE/C64/sdl-hotkeys-vsid.vhk @@ -0,0 +1,49 @@ +# VICE hotkey mapping file +# +# A hotkey map is read in as a patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keynum path&to&menuitem' +# +# Keywords and their lines are: +# '!CLEAR' clear all mappings +# + +!CLEAR + +# ALT+0 +1072 Default tune + +# ALT+1..ALT+9 +1073 Select tune&Tune 1 +1074 Select tune&Tune 2 +1075 Select tune&Tune 3 +1076 Select tune&Tune 4 +1077 Select tune&Tune 5 +1078 Select tune&Tune 6 +1079 Select tune&Tune 7 +1080 Select tune&Tune 8 +1081 Select tune&Tune 9 + +# ALT+H +1128 Monitor&Start monitor +# ALT+L +1132 Load PSID file +# ALT+P +1136 Pause +# ALT+Q +1137 Quit emulator +# ALT+W +1143 Speed settings&Warp mode + +# ALT+SHIFT+R +#1650 Save media file +# ALT+SHIFT+S +#1651 Save media file&Create sound recording&Stop recording + +# ALT+F9 +1314 Reset&Soft +# ALT+F12 +1317 Reset&Hard diff --git a/VICE/C64/sdl-hotkeys.vhk b/VICE/C64/sdl-hotkeys.vhk new file mode 100644 index 0000000..1bfca94 --- /dev/null +++ b/VICE/C64/sdl-hotkeys.vhk @@ -0,0 +1,96 @@ +# VICE hotkey mapping file +# +# A hotkey map is read in as a patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'keynum path&to&menuitem' +# +# Keywords and their lines are: +# '!CLEAR' clear all mappings +# + +!CLEAR + +# Numlock +300 Machine settings&Joystick settings&Swap native joystick ports + +# ALT+0 +1072 Drive&Attach disk image to drive 10 +# ALT+1 +1073 Drive&Attach disk image to drive 11 +# ALT+4 +1076 Printer&Printer #4 form feed +# ALT+5 +1077 Printer&Printer #5 form feed +# ALT+6 +1078 Printer&Printer #6 form feed +# ALT+8 +1080 Drive&Attach disk image to drive 8 +# ALT+9 +1081 Drive&Attach disk image to drive 9 + +# ALT+A +1121 Autostart image +# ALT+B +1122 Statusbar +# ALT+C +1123 Cartridge&Attach CRT image +# ALT+D +1124 Video settings&Size settings&Fullscreen +# ALT+E +1125 Snapshot&Set recording milestone +# ALT+H +1128 Monitor&Start monitor +# ALT+I +1129 Drive&Fliplist settings&Add current image to fliplist +# ALT+J +1130 Machine settings&Joystick settings&Swap native joystick ports +# ALT+K +1131 Drive&Fliplist settings&Remove current image from fliplist +# ALT+L +1132 Snapshot&Load snapshot image +# ALT+M +1133 Machine settings&Mouse emulation&Grab mouse events +# ALT+N +1134 Drive&Fliplist settings&Attach next image in fliplist +# ALT+P +1136 Pause +# ALT+Q +1137 Quit emulator +# ALT+S +1139 Snapshot&Save snapshot image +# ALT+T +1140 Tape&Attach tape image +# ALT+U +1141 Snapshot&Return to milestone +# ALT+W +1143 Speed settings&Warp mode +# ALT+Z +1146 Cartridge&Cartridge freeze + +# ALT+SHIFT+J +1642 Machine settings&Joystick settings&Allow keyset joystick +# ALT+SHIFT+N +3182 Drive&Fliplist settings&Attach previous image in fliplist +# ALT+SHIFT+P +1648 Advance Frame +# ALT+SHIFT+R +1650 Save media file +# ALT+SHIFT+S +1651 Save media file&Create sound recording&Stop recording + +# ALT+F9 +1314 Reset&Soft +# ALT+F10 +1315 Snapshot&Quickload snapshot.vsf +# ALT+F11 +1316 Snapshot&Quicksave snapshot.vsf +# ALT+F12 +1317 Reset&Hard + +# ALT+Delete +1151 Edit&Copy to Clipboard +# ALT+Insert +1301 Edit&Paste from Clipboard diff --git a/VICE/C64/sdl_joymap_ps3.vjm b/VICE/C64/sdl_joymap_ps3.vjm new file mode 100644 index 0000000..d829233 --- /dev/null +++ b/VICE/C64/sdl_joymap_ps3.vjm @@ -0,0 +1,97 @@ +# VICE joystick mapping file +# +# A joystick map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'joynum inputtype inputindex action' +# +# Keywords and their lines are: +# '!CLEAR' clear all mappings +# +# inputtype: +# 0 axis +# 1 button +# 2 hat +# 3 ball +# +# Note that each axis has 2 inputindex entries and each hat has 4. +# +# action [action_parameters]: +# 0 none +# 1 port pin joystick (pin: 1/2/4/8/16 = u/d/l/r/fire) +# 2 row col keyboard +# 3 map +# 4 UI activate +# 5 path&to&item UI function +# + +!CLEAR + +# Sony PLAYSTATION(R)3 Controller + +# analog left -> joystick +# right +0 0 0 1 1 8 +# left +0 0 1 1 1 4 +# down +0 0 2 1 1 2 +# up +0 0 3 1 1 1 + +0 0 4 1 1 16 +0 0 5 1 1 16 + +# analog right +# right +0 0 6 1 1 8 +# left +0 0 7 1 1 4 +# down +0 0 8 2 0 7 +# up +0 0 9 2 0 7 + +0 0 10 1 1 16 +0 0 11 1 1 16 + +0 1 0 1 1 16 +# O -> Space +0 1 1 2 7 4 +# ^ -> RunStop +0 1 2 2 7 7 +# # -> arrow left +0 1 3 2 7 1 + +# L1 -> N +0 1 4 2 4 7 +# R1 -> Y +0 1 5 2 3 1 + +0 1 6 1 1 16 +0 1 7 1 1 16 + +# SELECT +0 1 8 5 Virtual keyboard +# START +0 1 9 4 +# PS +0 1 10 5 Quit emulator + +# L3 -> fire +0 1 11 1 1 16 +# R3 - > return +0 1 12 2 0 1 + +# DPAD -> joystick +# DPAD up +0 1 13 1 1 1 +# DPAD down +0 1 14 1 1 2 +# DPAD left +0 1 15 1 1 4 +# DPAD right +0 1 16 1 1 8 + diff --git a/VICE/C64/sdl_joymap_thec64.vjm b/VICE/C64/sdl_joymap_thec64.vjm new file mode 100644 index 0000000..2e62bf9 --- /dev/null +++ b/VICE/C64/sdl_joymap_thec64.vjm @@ -0,0 +1,54 @@ +# VICE joystick mapping file +# +# A joystick map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal line has 'joynum inputtype inputindex action' +# +# Keywords and their lines are: +# '!CLEAR' clear all mappings +# +# inputtype: +# 0 axis +# 1 button +# 2 hat +# 3 ball +# +# Note that each axis has 2 inputindex entries and each hat has 4. +# +# action [action_parameters]: +# 0 none +# 1 port pin joystick (pin: 1/2/4/8/16/32/64 = u/d/l/r/fire/fire2/fire3) +# 2 row col keyboard +# 3 map +# 4 UI activate +# 5 path&to&item UI function +# + +!CLEAR + +# THEC64 Joystick THEC64 Joystick +0 0 0 1 1 8 +0 0 1 1 1 4 +0 0 2 1 1 2 +0 0 3 1 1 1 + +0 1 0 1 1 16 +0 1 1 1 1 32 +0 1 2 1 1 8 +0 1 3 1 1 64 +0 1 4 5 Virtual keyboard +0 1 5 5 Statusbar +0 1 6 5 Pause +0 1 7 4 +0 1 8 1 1 16 +0 1 9 4 +0 1 10 3 +0 1 11 1 0 16 + + + + + diff --git a/VICE/C64/sdl_keyrah.vkm b/VICE/C64/sdl_keyrah.vkm new file mode 100644 index 0000000..ca60ceb --- /dev/null +++ b/VICE/C64/sdl_keyrah.vkm @@ -0,0 +1,267 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping for Individual Computer's "Keyrah", US Layout, C64, SDL + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# this keyboard map applies for the "vice" setting of keyrah (switch down) and +# maps all 64 keys, plus restore, to the respective emulated keys in the +# emulation. this however leaves no key free to enter the menu - one way to work +# around this is to configure the "enter menu" key to the code which is produced +# by the arrow up key when the switch is in "normal" (middle) position, like: +# +# -menukey 281 arrow up for menu (with switch in middle pos.) +# + +# to use this keymap with keyrah +# - host keyboard mapping should be "us" without accents! (nodeadkeys) +# - the jumper in keyrah should be set to "us" +# - switch in position "down" (emulator) +# - set joystick port 1 to "keyset a" and port 2 to "keyset b" + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +8 0 0 8 /* backspace -> Del */ +13 0 1 8 /* Return -> Return */ +275 0 2 8 /* Right -> CRSR RIGHT */ +276 0 2 1 /* Left -> CRSR LEFT */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ + +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ + +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ + +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ + +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ + +#223 5 0 8 /* world 63 -> + */ +#180 5 3 8 /* world 20 -> - */ +45 5 0 8 /* + -> + */ +61 5 3 8 /* - -> - */ +46 5 4 8 /* . -> . */ +#246 5 5 8 /* world 86 -> : */ +#252 5 6 8 /* world 92 -> @ */ +59 5 5 8 /* : -> : */ +91 5 6 8 /* @ -> @ */ +44 5 7 8 /* , -> , */ + +277 6 0 8 /* insert -> Pound */ +43 6 1 8 /* * -> * */ +93 6 1 8 /* * -> * */ +#228 6 2 8 /* world 68 -> ; */ +39 6 2 8 /* ; -> ; */ +278 6 3 8 /* Home -> CLR/HOME */ +303 6 4 4 /* Right Shift -> Right Shift */ +#35 6 5 8 /* # -> = */ +92 6 5 8 /* # -> = */ +127 6 6 8 /* delete -> Up Arrow */ +#45 6 7 8 /* - -> / */ +47 6 7 8 /* / -> / */ + +49 7 0 8 /* 1 -> 1 */ +94 7 1 8 /* ^ -> Left Arrow */ +96 7 1 8 /* ^ -> Left Arrow */ +9 7 2 16392 /* TAB -> Ctrl */ +50 7 3 8 /* 2 -> 2 */ +32 7 4 8 /* Space -> Space */ +306 7 5 8200 /* Left Ctrl -> CBM */ +27 7 7 8 /* ESC -> Run/Stop */ + +97 1 2 8 /* A -> A */ +98 3 4 8 /* B -> B */ +99 2 4 8 /* C -> C */ +100 2 2 8 /* D -> D */ +101 1 6 8 /* E -> E */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +105 4 1 8 /* I -> I */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +109 4 4 8 /* M -> M */ +110 4 7 8 /* N -> N */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +113 7 6 8 /* Q -> Q */ +114 2 1 8 /* R -> R */ +115 1 5 8 /* S -> S */ +116 2 6 8 /* T -> T */ +117 3 6 8 /* U -> U */ +118 3 7 8 /* V -> V */ +119 1 1 8 /* W -> W */ +120 2 7 8 /* X -> X */ +122 3 1 8 /* Y -> Y */ +121 1 4 8 /* Z -> Z */ + +# Restore key +280 -3 0 + +# joystick keymap A (port 1) +256 -1 0 /* NumPad 0 -> FIRE */ +265 -1 7 /* NumPad 9 -> UP */ +259 -1 2 /* NumPad 3 -> DOWN */ +263 -1 4 /* NumPad 7 -> LEFT */ +257 -1 5 /* NumPad 1 -> RIGHT */ + +# joystick Keymap B (port 2) +261 -2 0 /* NumPad 5 -> FIRE */ +264 -2 7 /* NumPad 8 -> UP */ +258 -2 2 /* NumPad 2 -> DOWN */ +260 -2 4 /* NumPad 4 -> LEFT */ +262 -2 5 /* NumPad 6 -> RIGHT */ + +# Joyport attached keypad key mappings +# note: there are no such keys on the C64 keyboard connected to keyrah +#300 -5 0 /* NumLock -> keypad x0 */ +#263 -5 1 /* NumPad 7 -> keypad 7 */ +#264 -5 2 /* NumPad 8 -> keypad 8 */ +#265 -5 3 /* NumPad 9 -> keypad 9 */ +#267 -5 4 /* NumPad / -> keypad / */ +#302 -5 5 /* ScrollLock -> keypad x1 */ +#260 -5 6 /* NumPad 4 -> keypad 4 */ +#261 -5 7 /* NumPad 5 -> keypad 5 */ +#262 -5 8 /* NumPad 6 -> keypad 6 */ +#268 -5 9 /* NumPad * -> keypad * */ +#317 -5 10 /* SysReq -> keypad x2 */ +#257 -5 11 /* NumPad 1 -> keypad 1 */ +#258 -5 12 /* NumPad 2 -> keypad 2 */ +#259 -5 13 /* NumPad 3 -> keypad 3 */ +#269 -5 14 /* NumPad - -> keypad - */ +#316 -5 15 /* PrtScr -> keypad x3 */ +#256 -5 16 /* NumPad 0 -> keypad 0 */ +#266 -5 17 /* NumPad , -> keypad . */ +#271 -5 18 /* NumPad Enter -> keypad enter */ +#270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_keyrah_combian.vkm b/VICE/C64/sdl_keyrah_combian.vkm new file mode 100644 index 0000000..bd2e5df --- /dev/null +++ b/VICE/C64/sdl_keyrah_combian.vkm @@ -0,0 +1,269 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping for Individual Computer's "Keyrah", US Layout, C64, SDL + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# This mapping was created specifically for use with "Combian" on the +# Combian, which apparently has a slightly broken keyboard mapping in SDL + +# For this mapping to work the keyboard in raspian must be PC-105 (GB) + +# this keyboard map applies for the "vice" setting of keyrah (switch down) and +# maps all 64 keys, plus restore, to the respective emulated keys in the +# emulation. this however leaves no key free to enter the menu - one way to work +# around this is to configure the "enter menu" key to the code which is produced +# by the arrow up key when the switch is in "normal" (middle) position, like: +# +# MenuKey=281 arrow up for menu (with switch in middle pos.) +# +# in combian you could add this to the sdl-vicerc file, which is located in +# /root/.vice/sdl-vicerc + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +8 0 0 8 /* backspace -> Del */ +13 0 1 8 /* Return -> Return */ +275 0 2 8 /* Right -> CRSR RIGHT */ +#276 0 2 1 /* Left -> CRSR LEFT */ +288 0 3 8 /* F7 -> F7 */ +#289 0 3 1 /* F8 -> F8 */ +282 0 4 8 /* F1 -> F1 */ +#283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +#285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +#287 0 6 1 /* F6 -> F6 */ +#273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ + +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +304 1 7 2 /* Left Shift -> Left Shift */ +#301 1 7 64 /* Caps Lock -> Shift Lock */ + +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ + +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ + +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ + +#223 5 0 8 /* world 63 -> + */ +45 5 0 8 /* + -> + */ +#180 5 3 8 /* world 20 -> - */ +61 5 3 8 /* - -> - */ +46 5 4 8 /* . -> . */ +#246 5 5 8 /* world 86 -> : */ +59 5 5 8 /* : -> : */ +#252 5 6 /* world 92 -> @ */ +91 5 6 8 /* world 92 -> @ */ +44 5 7 8 /* , -> , */ + +277 6 0 8 /* Pound -> Pound */ +#43 6 1 8 /* * -> * */ +93 6 1 8 /* * -> * */ +#228 6 2 8 /* world 68 -> ; */ +39 6 2 8 /* ; -> ; */ +278 6 3 8 /* Home -> CLR/HOME */ +303 6 4 4 /* Right Shift -> Right Shift */ +#35 6 5 8 /* = -> = */ +92 6 5 8 /* \ -> = */ +127 6 6 8 /* Up Arrow -> Up Arrow */ +#45 6 7 8 /* - -> / */ +47 6 7 8 /* / -> / */ + +49 7 0 8 /* 1 -> 1 */ +#94 7 1 8 /* ^ -> Left Arrow */ +96 7 1 8 /* Left Arrow -> Left Arrow */ +9 7 2 16392 /* Ctrl -> Ctrl */ +50 7 3 8 /* 2 -> 2 */ +32 7 4 8 /* Space -> Space */ +306 7 5 8200 /* CBM -> CBM */ +27 7 7 8 /* Run/Stop -> Run/Stop */ + +97 1 2 8 /* A -> A */ +98 3 4 8 /* B -> B */ +99 2 4 8 /* C -> C */ +100 2 2 8 /* D -> D */ +101 1 6 8 /* E -> E */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +105 4 1 8 /* I -> I */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +109 4 4 8 /* M -> M */ +110 4 7 8 /* N -> N */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +113 7 6 8 /* Q -> Q */ +114 2 1 8 /* R -> R */ +115 1 5 8 /* S -> S */ +116 2 6 8 /* T -> T */ +117 3 6 8 /* U -> U */ +118 3 7 8 /* V -> V */ +119 1 1 8 /* W -> W */ +120 2 7 8 /* X -> X */ + +121 3 1 8 /* Y -> Y */ +122 1 4 8 /* Z -> Z */ + +# Restore key +280 -3 0 + +# joystick keymap A (port 1) +256 -1 0 /* NumPad 0 -> FIRE */ +265 -1 7 /* NumPad 9 -> UP */ +259 -1 2 /* NumPad 3 -> DOWN */ +263 -1 4 /* NumPad 7 -> LEFT */ +257 -1 5 /* NumPad 1 -> RIGHT */ + +# joystick Keymap B (port 2) +261 -2 0 /* NumPad 5 -> FIRE */ +264 -2 7 /* NumPad 8 -> UP */ +258 -2 2 /* NumPad 2 -> DOWN */ +260 -2 4 /* NumPad 4 -> LEFT */ +262 -2 5 /* NumPad 6 -> RIGHT */ + +# Joyport attached keypad key mappings +# note: there are no such keys on the C64 keyboard connected to keyrah +#300 -5 0 /* NumLock -> keypad x0 */ +#263 -5 1 /* NumPad 7 -> keypad 7 */ +#264 -5 2 /* NumPad 8 -> keypad 8 */ +#265 -5 3 /* NumPad 9 -> keypad 9 */ +#267 -5 4 /* NumPad / -> keypad / */ +#302 -5 5 /* ScrollLock -> keypad x1 */ +#260 -5 6 /* NumPad 4 -> keypad 4 */ +#261 -5 7 /* NumPad 5 -> keypad 5 */ +#262 -5 8 /* NumPad 6 -> keypad 6 */ +#268 -5 9 /* NumPad * -> keypad * */ +#317 -5 10 /* SysReq -> keypad x2 */ +#257 -5 11 /* NumPad 1 -> keypad 1 */ +#258 -5 12 /* NumPad 2 -> keypad 2 */ +#259 -5 13 /* NumPad 3 -> keypad 3 */ +#269 -5 14 /* NumPad - -> keypad - */ +#316 -5 15 /* PrtScr -> keypad x3 */ +#256 -5 16 /* NumPad 0 -> keypad 0 */ +#266 -5 17 /* NumPad , -> keypad . */ +#271 -5 18 /* NumPad Enter -> keypad enter */ +#270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_keyrah_de.vkm b/VICE/C64/sdl_keyrah_de.vkm new file mode 100644 index 0000000..3b00b04 --- /dev/null +++ b/VICE/C64/sdl_keyrah_de.vkm @@ -0,0 +1,258 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping for Individual Computer's "Keyrah", German Layout, C64, SDL + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# this keyboard map applies for the "vice" setting of keyrah (switch down) and +# maps all 64 keys, plus restore, to the respective emulated keys in the +# emulation. this however leaves no key free to enter the menu - one way to work +# around this is to configure the "enter menu" key to the code which is produced +# by the restore key when the switch is in "normal" (middle) position, like: +# +# -menukey 60 restore for menu (with switch in middle pos.) +# + +# to use this keymap with keyrah +# - host keyboard mapping should be "german" without accents! (nodeadkeys) +# - the jumper in keyrah should be set to "de" +# - switch in position "down" (emulator) +# - set joystick port 1 to "keyset a" and port 2 to "keyset b" + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +8 0 0 8 /* backspace -> Del */ +13 0 1 8 /* Return -> Return */ +275 0 2 8 /* Right -> CRSR RIGHT */ +276 0 2 1 /* Left -> CRSR LEFT */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ + +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ + +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ + +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ + +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ + +223 5 0 8 /* world 63 -> + */ +180 5 3 8 /* world 20 -> - */ +46 5 4 8 /* . -> . */ +246 5 5 8 /* world 86 -> : */ +252 5 6 8 /* world 92 -> @ */ +44 5 7 8 /* , -> , */ + +277 6 0 8 /* insert -> Pound */ +43 6 1 8 /* * -> * */ +228 6 2 8 /* world 68 -> ; */ +278 6 3 8 /* Home -> CLR/HOME */ +303 6 4 4 /* Right Shift -> Right Shift */ +35 6 5 8 /* # -> = */ +127 6 6 8 /* delete -> Up Arrow */ +45 6 7 8 /* - -> / */ + +49 7 0 8 /* 1 -> 1 */ +94 7 1 8 /* ^ -> Left Arrow */ +9 7 2 16392 /* TAB -> Ctrl */ +50 7 3 8 /* 2 -> 2 */ +32 7 4 8 /* Space -> Space */ +306 7 5 8200 /* Left Ctrl -> CBM */ +27 7 7 8 /* ESC -> Run/Stop */ + +97 1 2 8 /* A -> A */ +98 3 4 8 /* B -> B */ +99 2 4 8 /* C -> C */ +100 2 2 8 /* D -> D */ +101 1 6 8 /* E -> E */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +105 4 1 8 /* I -> I */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +109 4 4 8 /* M -> M */ +110 4 7 8 /* N -> N */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +113 7 6 8 /* Q -> Q */ +114 2 1 8 /* R -> R */ +115 1 5 8 /* S -> S */ +116 2 6 8 /* T -> T */ +117 3 6 8 /* U -> U */ +118 3 7 8 /* V -> V */ +119 1 1 8 /* W -> W */ +120 2 7 8 /* X -> X */ +122 3 1 8 /* Y -> Y */ +121 1 4 8 /* Z -> Z */ + +# Restore key +280 -3 0 + +# joystick keymap A (port 1) +256 -1 0 /* NumPad 0 -> FIRE */ +265 -1 7 /* NumPad 9 -> UP */ +259 -1 2 /* NumPad 3 -> DOWN */ +263 -1 4 /* NumPad 7 -> LEFT */ +257 -1 5 /* NumPad 1 -> RIGHT */ + +# joystick Keymap B (port 2) +261 -2 0 /* NumPad 5 -> FIRE */ +264 -2 7 /* NumPad 8 -> UP */ +258 -2 2 /* NumPad 2 -> DOWN */ +260 -2 4 /* NumPad 4 -> LEFT */ +262 -2 5 /* NumPad 6 -> RIGHT */ + +# Joyport attached keypad key mappings +# note: there are no such keys on the C64 keyboard connected to keyrah +#300 -5 0 /* NumLock -> keypad x0 */ +#263 -5 1 /* NumPad 7 -> keypad 7 */ +#264 -5 2 /* NumPad 8 -> keypad 8 */ +#265 -5 3 /* NumPad 9 -> keypad 9 */ +#267 -5 4 /* NumPad / -> keypad / */ +#302 -5 5 /* ScrollLock -> keypad x1 */ +#260 -5 6 /* NumPad 4 -> keypad 4 */ +#261 -5 7 /* NumPad 5 -> keypad 5 */ +#262 -5 8 /* NumPad 6 -> keypad 6 */ +#268 -5 9 /* NumPad * -> keypad * */ +#317 -5 10 /* SysReq -> keypad x2 */ +#257 -5 11 /* NumPad 1 -> keypad 1 */ +#258 -5 12 /* NumPad 2 -> keypad 2 */ +#259 -5 13 /* NumPad 3 -> keypad 3 */ +#269 -5 14 /* NumPad - -> keypad - */ +#316 -5 15 /* PrtScr -> keypad x3 */ +#256 -5 16 /* NumPad 0 -> keypad 0 */ +#266 -5 17 /* NumPad , -> keypad . */ +#271 -5 18 /* NumPad Enter -> keypad enter */ +#270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_keyrah_retropie.vkm b/VICE/C64/sdl_keyrah_retropie.vkm new file mode 100644 index 0000000..9828b8a --- /dev/null +++ b/VICE/C64/sdl_keyrah_retropie.vkm @@ -0,0 +1,267 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping for Individual Computer's "Keyrah", US Layout, C64, SDL + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# This mapping was created specifically for use with "RetroPie" on the +# Rasperry Pi, which apparently has a slightly broken keyboard mapping in SDL + +# this keyboard map applies for the "vice" setting of keyrah (switch down) and +# maps all 64 keys, plus restore, to the respective emulated keys in the +# emulation. this however leaves no key free to enter the menu - one way to work +# around this is to configure the "enter menu" key to the code which is produced +# by the arrow up key when the switch is in "normal" (middle) position, like: +# +# -menukey 281 arrow up for menu (with switch in middle pos.) +# +# in retropie you could add this to the vice.sh script that is located in +# /opt/retropie/emulators/vice/bin/ or the vice config file which is +# /home/pi/.vice/sdl-vicerc + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +8 0 0 8 /* backspace -> Del */ +13 0 1 8 /* Return -> Return */ +275 0 2 8 /* Right -> CRSR RIGHT */ +#276 0 2 1 /* Left -> CRSR LEFT */ +288 0 3 8 /* F7 -> F7 */ +#289 0 3 1 /* F8 -> F8 */ +282 0 4 8 /* F1 -> F1 */ +#283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +#285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +#287 0 6 1 /* F6 -> F6 */ +#273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ + +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +304 1 7 2 /* Left Shift -> Left Shift */ +#301 1 7 64 /* Caps Lock -> Shift Lock */ + +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ + +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ + +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ + +#223 5 0 8 /* world 63 -> + */ +45 5 0 8 /* + -> + */ +#180 5 3 8 /* world 20 -> - */ +61 5 3 8 /* - -> - */ +46 5 4 8 /* . -> . */ +#246 5 5 8 /* world 86 -> : */ +59 5 5 8 /* : -> : */ +#252 5 6 /* world 92 -> @ */ +91 5 6 8 /* world 92 -> @ */ +44 5 7 8 /* , -> , */ + +277 6 0 8 /* Pound -> Pound */ +#43 6 1 8 /* * -> * */ +93 6 1 8 /* * -> * */ +#228 6 2 8 /* world 68 -> ; */ +39 6 2 8 /* ; -> ; */ +278 6 3 8 /* Home -> CLR/HOME */ +303 6 4 4 /* Right Shift -> Right Shift */ +35 6 5 8 /* = -> = */ +127 6 6 8 /* Up Arrow -> Up Arrow */ +#45 6 7 8 /* - -> / */ +47 6 7 8 /* / -> / */ + +49 7 0 8 /* 1 -> 1 */ +#94 7 1 8 /* ^ -> Left Arrow */ +96 7 1 8 /* Left Arrow -> Left Arrow */ +9 7 2 16392 /* Ctrl -> Ctrl */ +50 7 3 8 /* 2 -> 2 */ +32 7 4 8 /* Space -> Space */ +306 7 5 8200 /* CBM -> CBM */ +27 7 7 8 /* Run/Stop -> Run/Stop */ + +97 1 2 8 /* A -> A */ +98 3 4 8 /* B -> B */ +99 2 4 8 /* C -> C */ +100 2 2 8 /* D -> D */ +101 1 6 8 /* E -> E */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +105 4 1 8 /* I -> I */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +109 4 4 8 /* M -> M */ +110 4 7 8 /* N -> N */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +113 7 6 8 /* Q -> Q */ +114 2 1 8 /* R -> R */ +115 1 5 8 /* S -> S */ +116 2 6 8 /* T -> T */ +117 3 6 8 /* U -> U */ +118 3 7 8 /* V -> V */ +119 1 1 8 /* W -> W */ +120 2 7 8 /* X -> X */ + +121 3 1 8 /* Y -> Y */ +122 1 4 8 /* Z -> Z */ + +# Restore key +280 -3 0 + +# joystick keymap A (port 1) +256 -1 0 /* NumPad 0 -> FIRE */ +265 -1 7 /* NumPad 9 -> UP */ +259 -1 2 /* NumPad 3 -> DOWN */ +263 -1 4 /* NumPad 7 -> LEFT */ +257 -1 5 /* NumPad 1 -> RIGHT */ + +# joystick Keymap B (port 2) +261 -2 0 /* NumPad 5 -> FIRE */ +264 -2 7 /* NumPad 8 -> UP */ +258 -2 2 /* NumPad 2 -> DOWN */ +260 -2 4 /* NumPad 4 -> LEFT */ +262 -2 5 /* NumPad 6 -> RIGHT */ + +# Joyport attached keypad key mappings +# note: there are no such keys on the C64 keyboard connected to keyrah +#300 -5 0 /* NumLock -> keypad x0 */ +#263 -5 1 /* NumPad 7 -> keypad 7 */ +#264 -5 2 /* NumPad 8 -> keypad 8 */ +#265 -5 3 /* NumPad 9 -> keypad 9 */ +#267 -5 4 /* NumPad / -> keypad / */ +#302 -5 5 /* ScrollLock -> keypad x1 */ +#260 -5 6 /* NumPad 4 -> keypad 4 */ +#261 -5 7 /* NumPad 5 -> keypad 5 */ +#262 -5 8 /* NumPad 6 -> keypad 6 */ +#268 -5 9 /* NumPad * -> keypad * */ +#317 -5 10 /* SysReq -> keypad x2 */ +#257 -5 11 /* NumPad 1 -> keypad 1 */ +#258 -5 12 /* NumPad 2 -> keypad 2 */ +#259 -5 13 /* NumPad 3 -> keypad 3 */ +#269 -5 14 /* NumPad - -> keypad - */ +#316 -5 15 /* PrtScr -> keypad x3 */ +#256 -5 16 /* NumPad 0 -> keypad 0 */ +#266 -5 17 /* NumPad , -> keypad . */ +#271 -5 18 /* NumPad Enter -> keypad enter */ +#270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_keyrah_retropie_de.vkm b/VICE/C64/sdl_keyrah_retropie_de.vkm new file mode 100644 index 0000000..f1546b7 --- /dev/null +++ b/VICE/C64/sdl_keyrah_retropie_de.vkm @@ -0,0 +1,266 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping for Individual Computer's "Keyrah", German Layout, C64, SDL + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# This mapping was created specifically for use with "RetroPie" on the +# Rasperry Pi, which apparently has a slightly broken keyboard mapping in SDL + +# NOTE: at the time of writing the regular US keymap works better even when the +# retropie keymap is set to DE. + +# this keyboard map applies for the "vice" setting of keyrah (switch down) and +# maps all 64 keys, plus restore, to the respective emulated keys in the +# emulation. this however leaves no key free to enter the menu - one way to work +# around this is to configure the "enter menu" key to the code which is produced +# by the restore key when the switch is in "normal" (middle) position, like: +# +# -menukey 60 restore for menu (with switch in middle pos.) +# +# in retropie you could add this to the vice.sh script that is located in +# /opt/retropie/emulators/vice/bin/ or the vice config file which is +# /home/pi/.vice/sdl-vicerc + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +8 0 0 8 /* backspace -> Del */ +13 0 1 8 /* Return -> Return */ +275 0 2 8 /* Right -> CRSR RIGHT */ +#276 0 2 1 /* Left -> CRSR LEFT */ +288 0 3 8 /* F7 -> F7 */ +#289 0 3 1 /* F8 -> F8 */ +282 0 4 8 /* F1 -> F1 */ +#283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +#285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +#287 0 6 1 /* F6 -> F6 */ +#273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ + +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +304 1 7 2 /* Left Shift -> Left Shift */ +#301 1 7 64 /* Caps Lock -> Shift Lock */ + +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ + +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ + +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ + +223 5 0 8 /* + -> + */ +#180 5 3 8 /* world 20 -> - */ +# there is something screwed up in SDL, we should neither get 0 nor get the same code for different keys +#0 5 3 8 /* - -> - */ +46 5 4 8 /* . -> . */ +246 5 5 8 /* : -> : */ +252 5 6 8 /* @ -> @ */ +44 5 7 8 /* , -> , */ + +277 6 0 8 /* Pound -> Pound */ +43 6 1 8 /* * -> * */ +228 6 2 8 /* ; -> ; */ +278 6 3 8 /* Home -> CLR/HOME */ +303 6 4 4 /* Right Shift -> Right Shift */ +35 6 5 8 /* = -> = */ +127 6 6 8 /* Up Arrow -> Up Arrow */ +45 6 7 8 /* / -> / */ + +49 7 0 8 /* 1 -> 1 */ +#94 7 1 8 /* ^ -> Left Arrow */ +# there is something screwed up in SDL, we should neither get 0 nor get the same code for different keys +#0 7 1 8 /* Left Arrow -> Left Arrow */ +9 7 2 16392 /* Ctrl -> Ctrl */ +50 7 3 8 /* 2 -> 2 */ +32 7 4 8 /* Space -> Space */ +306 7 5 8200 /* CBM -> CBM */ +27 7 7 8 /* Run/Stop -> Run/Stop */ + +97 1 2 8 /* A -> A */ +98 3 4 8 /* B -> B */ +99 2 4 8 /* C -> C */ +100 2 2 8 /* D -> D */ +101 1 6 8 /* E -> E */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +105 4 1 8 /* I -> I */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +109 4 4 8 /* M -> M */ +110 4 7 8 /* N -> N */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +113 7 6 8 /* Q -> Q */ +114 2 1 8 /* R -> R */ +115 1 5 8 /* S -> S */ +116 2 6 8 /* T -> T */ +117 3 6 8 /* U -> U */ +118 3 7 8 /* V -> V */ +119 1 1 8 /* W -> W */ +120 2 7 8 /* X -> X */ + +122 3 1 8 /* Y -> Y */ +121 1 4 8 /* Z -> Z */ + +# Restore key +280 -3 0 + +# joystick keymap A (port 1) +256 -1 0 /* NumPad 0 -> FIRE */ +265 -1 7 /* NumPad 9 -> UP */ +259 -1 2 /* NumPad 3 -> DOWN */ +263 -1 4 /* NumPad 7 -> LEFT */ +257 -1 5 /* NumPad 1 -> RIGHT */ + +# joystick Keymap B (port 2) +261 -2 0 /* NumPad 5 -> FIRE */ +264 -2 7 /* NumPad 8 -> UP */ +258 -2 2 /* NumPad 2 -> DOWN */ +260 -2 4 /* NumPad 4 -> LEFT */ +262 -2 5 /* NumPad 6 -> RIGHT */ + +# Joyport attached keypad key mappings +# note: there are no such keys on the C64 keyboard connected to keyrah +#300 -5 0 /* NumLock -> keypad x0 */ +#263 -5 1 /* NumPad 7 -> keypad 7 */ +#264 -5 2 /* NumPad 8 -> keypad 8 */ +#265 -5 3 /* NumPad 9 -> keypad 9 */ +#267 -5 4 /* NumPad / -> keypad / */ +#302 -5 5 /* ScrollLock -> keypad x1 */ +#260 -5 6 /* NumPad 4 -> keypad 4 */ +#261 -5 7 /* NumPad 5 -> keypad 5 */ +#262 -5 8 /* NumPad 6 -> keypad 6 */ +#268 -5 9 /* NumPad * -> keypad * */ +#317 -5 10 /* SysReq -> keypad x2 */ +#257 -5 11 /* NumPad 1 -> keypad 1 */ +#258 -5 12 /* NumPad 2 -> keypad 2 */ +#259 -5 13 /* NumPad 3 -> keypad 3 */ +#269 -5 14 /* NumPad - -> keypad - */ +#316 -5 15 /* PrtScr -> keypad x3 */ +#256 -5 16 /* NumPad 0 -> keypad 0 */ +#266 -5 17 /* NumPad , -> keypad . */ +#271 -5 18 /* NumPad Enter -> keypad enter */ +#270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_pos.vkm b/VICE/C64/sdl_pos.vkm new file mode 100644 index 0000000..9821529 --- /dev/null +++ b/VICE/C64/sdl_pos.vkm @@ -0,0 +1,219 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ +45 5 0 8 /* Minus -> Plus */ +61 5 3 8 /* Equal -> Minus */ +8 0 0 8 /* Backspace -> Del */ +9 7 2 16392 /* TAB -> Ctrl */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 6 8 /* [ -> @ */ +93 6 1 8 /* ] -> * */ +13 0 1 8 /* Return -> Return */ +306 7 5 8200 /* Left Ctrl -> CBM */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +59 5 5 8 /* ; -> : */ +39 6 2 8 /* ' -> ; */ +96 7 1 8 /* ` -> Left Arrow */ +92 6 5 8 /* \ -> = */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 8 /* , -> , */ +46 5 4 8 /* . -> . */ +47 6 7 8 /* / -> / */ +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ +277 6 0 8 /* Ins -> Pound */ +127 6 6 8 /* Del -> Up Arrow */ +279 6 6 8 /* End -> Up Arrow */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_pos_ch.vkm b/VICE/C64/sdl_pos_ch.vkm new file mode 100644 index 0000000..9937b54 --- /dev/null +++ b/VICE/C64/sdl_pos_ch.vkm @@ -0,0 +1,259 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +# Positional Mapping, German Layout, C64, SDL, pc(105)-de keyboard + +# keys that can't be mapped positionally are: +# (row0) pound (-> ), clr/home (-> home) +# (row1) arrow up (-> end), restore (-> page up) +# (row2) run/stop (-> escape) +# (row3) commodore (-> control) + +# extra keys are: +# clr/home (-> pos1) +# ins/del (-> delete) +# ins/del+shift (-> insert) +# arrow up (-> end) +# arrow up+shift (-> end+shift) + + +167 7 1 32 /* -> A_LFT */ +167 6 6 129 /* -> pi */ +39 5 0 8 /* ' -> + */ +168 6 1 8 /* ..-> * */ +36 6 5 8 /* $ -> = */ +127 6 6 8 /* Del -> A-UP */ +277 6 0 8 /* (de) Ins -> Pound */ + + +94 5 3 8 /* ^ -> Left Arrow */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ +223 5 0 8 /* (de) sz -> + */ +180 5 3 8 /* (de) ? -> - */ +60 6 0 8 /* (de) < > -> Pound */ +278 6 3 8 /* Home -> CLR/HOME */ +8 0 0 8 /* Ins -> Ins */ + +#9 7 2 8+16384 key is CTRL /* TAB -> Ctrl */ +9 7 2 16392 /* TAB -> Ctrl */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +122 3 1 8 /* Z -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +252 5 6 8 /* (de) ue -> @ */ +43 6 1 8 /* * -> * */ +279 6 6 8 /* End -> Up Arrow */ + +27 7 7 8 /* ESC -> Run/Stop */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +246 5 5 8 /* (de) oe -> : */ +228 6 2 8 /* (de) ae -> ; */ +35 6 5 8 /* # -> = */ +13 0 1 8 /* Return -> Return */ + +#306 7 5 8+8192 key is CBM /* Left Ctrl -> CBM */ +306 7 5 8200 /* Left Ctrl -> CBM */ +304 1 7 2 /* Left Shift -> Left Shift */ +121 1 4 8 /* Y -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 8 /* , -> , */ +46 5 4 8 /* . -> . */ +45 6 7 8 /* - -> / */ +303 6 4 4 /* Right Shift -> Right Shift */ +273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ +275 0 2 8 /* Right -> CRSR RIGHT */ +276 0 2 1 /* Left -> CRSR LEFT */ + +32 7 4 8 /* Space -> Space */ + +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ + +278 6 3 8 /* Home -> CLR/HOME */ +# 280 -3 0 /* Page Up -> RESTORE */ + +267 6 7 8 /* NumPad / -> / */ +268 6 1 8 /* NumPad * -> * */ +269 5 3 8 /* NumPad - -> - */ +270 5 0 8 /* NumPad + -> + */ +271 0 1 8 /* NP Return -> Return */ + +# Restore key mappings +280 -3 0 /* Page Up -> RESTORE */ + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_pos_da.vkm b/VICE/C64/sdl_pos_da.vkm new file mode 100644 index 0000000..5364b72 --- /dev/null +++ b/VICE/C64/sdl_pos_da.vkm @@ -0,0 +1,240 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 32 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 32 /* 0 -> 0 */ +8 0 0 8 /* Backspace -> Del */ +9 7 2 16392 /* TAB -> Ctrl */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 6 8 /* [ -> @ */ +93 6 1 8 /* ] -> * */ +13 0 1 8 /* Return -> Return */ +306 7 5 8200 /* Left Ctrl -> CBM */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ + +55 6 7 0 /* / -> / */ +39 3 0 33 /* ' -> ' */ +39 6 1 16 /* * -> * */ +43 5 0 32 /* + -> + */ +43 6 7 1 /* ? -> ? */ +48 6 5 16 /* = -> = */ +45 5 3 8 /* - -> - */ +60 5 7 33 /* < -> < */ +60 5 4 1 /* > -> > */ +44 5 7 32 /* , -> , */ +44 6 2 0 /* ; -> ; */ +46 5 4 32 /* . -> . */ +46 5 5 0 /* ; -> ; */ + +127 0 0 8 /* Ins -> Ins */ +277 0 0 1 /* Del -> Del */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ + +267 6 7 8 /* NumPad / -> / */ +268 6 1 8 /* NumPad * -> * */ +269 5 3 8 /* NumPad - -> - */ +270 5 0 8 /* NumPad + -> + */ + +# da layout specific things +229 5 6 8 /* aa -> @ */ +230 5 5 1 /* (da) ae -> [ */ +248 6 2 1 /* (da) oe -> ] */ +189 7 1 8 /* (da) 1/2 -> Left Arrow */ +# this code is given by two different keys on da layout! +314 6 6 33 /* ^ -> Up Arrow */ +314 6 6 0 /* " (umlaut) -> PI */ +# ...hence we need to map Pound somewhere else; this is ugly. +279 6 0 8 /* (da) End -> Pound */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_pos_de.vkm b/VICE/C64/sdl_pos_de.vkm new file mode 100644 index 0000000..834bfc3 --- /dev/null +++ b/VICE/C64/sdl_pos_de.vkm @@ -0,0 +1,249 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Positional Mapping, German Layout, C64, SDL, pc(105)-de keyboard + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +# keys that can't be mapped positionally are: +# (row0) pound (-> ), clr/home (-> home) +# (row1) arrow up (-> end), restore (-> page up) +# (row2) run/stop (-> escape) +# (row3) commodore (-> control) + +# extra keys are: +# clr/home (-> pos1) +# ins/del (-> delete) +# ins/del+shift (-> insert) +# arrow up (-> end) +# arrow up+shift (-> end+shift) + +94 7 1 8 /* ^ -> Left Arrow */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 8 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 8 /* 0 -> 0 */ +223 5 0 8 /* (de) sz -> + */ +180 5 3 8 /* (de) ? -> - */ +60 6 0 8 /* (de) < > -> Pound */ +278 6 3 8 /* Home -> CLR/HOME */ +8 0 0 8 /* Ins -> Ins */ + +9 7 2 16392 /* TAB -> Ctrl */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +122 3 1 8 /* Z -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +252 5 6 8 /* (de) ue -> @ */ +43 6 1 8 /* * -> * */ +279 6 6 8 /* End -> Up Arrow */ + +27 7 7 8 /* ESC -> Run/Stop */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +246 5 5 8 /* (de) oe -> : */ +228 6 2 8 /* (de) ae -> ; */ +35 6 5 8 /* # -> = */ +13 0 1 8 /* Return -> Return */ + +306 7 5 8200 /* Left Ctrl -> CBM */ +304 1 7 2 /* Left Shift -> Left Shift */ +121 1 4 8 /* Y -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 8 /* , -> , */ +46 5 4 8 /* . -> . */ +45 6 7 8 /* - -> / */ +303 6 4 4 /* Right Shift -> Right Shift */ +273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ +275 0 2 8 /* Right -> CRSR RIGHT */ +276 0 2 1 /* Left -> CRSR LEFT */ + +32 7 4 8 /* Space -> Space */ + +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ + +127 0 0 8 /* Ins -> Ins */ +277 0 0 1 /* Del -> Del */ +278 6 3 8 /* Home -> CLR/HOME */ +# 280 -3 0 /* Page Up -> RESTORE */ + +267 6 7 8 /* NumPad / -> / */ +268 6 1 8 /* NumPad * -> * */ +269 5 3 8 /* NumPad - -> - */ +270 5 0 8 /* NumPad + -> + */ +271 0 1 8 /* NP Return -> Return */ + +# Restore key mappings +280 -3 0 /* Page Up -> RESTORE */ + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_pos_fi.vkm b/VICE/C64/sdl_pos_fi.vkm new file mode 100644 index 0000000..551f300 --- /dev/null +++ b/VICE/C64/sdl_pos_fi.vkm @@ -0,0 +1,240 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 32 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 32 /* 0 -> 0 */ +8 0 0 8 /* Backspace -> Del */ +9 7 2 16392 /* TAB -> Ctrl */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 6 8 /* [ -> @ */ +93 6 1 8 /* ] -> * */ +13 0 1 8 /* Return -> Return */ +306 7 5 8200 /* Left Ctrl -> CBM */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ + +55 6 7 0 /* / -> / */ +39 3 0 33 /* ' -> ' */ +39 6 1 16 /* * -> * */ +43 5 0 32 /* + -> + */ +43 6 7 1 /* ? -> ? */ +48 6 5 16 /* = -> = */ +45 5 3 8 /* - -> - */ +60 5 7 33 /* < -> < */ +60 5 4 1 /* > -> > */ +44 5 7 32 /* , -> , */ +44 6 2 0 /* ; -> ; */ +46 5 4 32 /* . -> . */ +46 5 5 0 /* ; -> ; */ + +127 0 0 8 /* Ins -> Ins */ +277 0 0 1 /* Del -> Del */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ + +267 6 7 8 /* NumPad / -> / */ +268 6 1 8 /* NumPad * -> * */ +269 5 3 8 /* NumPad - -> - */ +270 5 0 8 /* NumPad + -> + */ + +# fi/se layout specific things +229 5 6 8 /* aa -> @ */ +246 5 5 1 /* (fi) oe -> [ */ +228 6 2 1 /* (fi) ae -> ] */ +167 7 1 8 /* (fi) Section -> Left Arrow */ +# this code is given by two different keys on fi/se layout! +314 6 6 33 /* ^ -> Up Arrow */ +314 6 6 0 /* " (umlaut) -> PI */ +# ...hence we need to map Pound somewhere else; this is ugly. +279 6 0 8 /* (fi) End -> Pound */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_pos_no.vkm b/VICE/C64/sdl_pos_no.vkm new file mode 100644 index 0000000..8455e40 --- /dev/null +++ b/VICE/C64/sdl_pos_no.vkm @@ -0,0 +1,238 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 32 /* 7 -> 7 */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 32 /* 0 -> 0 */ +8 0 0 8 /* Backspace -> Del */ +9 7 2 16392 /* TAB -> Ctrl */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 6 8 /* [ -> @ */ +93 6 1 8 /* ] -> * */ +13 0 1 8 /* Return -> Return */ +306 7 5 8200 /* Left Ctrl -> CBM */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ + +55 6 7 0 /* / -> / */ +39 3 0 33 /* ' -> ' */ +39 6 1 16 /* * -> * */ +43 5 0 32 /* + -> + */ +43 6 7 1 /* ? -> ? */ +48 6 5 16 /* = -> = */ +45 5 3 8 /* - -> - */ +60 5 7 33 /* < -> < */ +60 5 4 1 /* > -> > */ +44 5 7 32 /* , -> , */ +44 6 2 0 /* ; -> ; */ +46 5 4 32 /* . -> . */ +46 5 5 0 /* ; -> ; */ + +127 0 0 8 /* Ins -> Ins */ +277 0 0 1 /* Del -> Del */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ + +267 6 7 8 /* NumPad / -> / */ +268 6 1 8 /* NumPad * -> * */ +269 5 3 8 /* NumPad - -> - */ +270 5 0 8 /* NumPad + -> + */ + +# no layout specific things +229 5 6 8 /* aa -> @ */ +314 6 6 33 /* ^ -> Up Arrow */ +314 6 6 0 /* " (umlaut) -> PI */ +248 5 5 1 /* (no) oe -> [ */ +230 6 2 1 /* (no) ae -> ] */ +124 7 1 8 /* (no) | -> Left Arrow */ +92 6 0 8 /* (no) \ -> Pound */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_sym.vkm b/VICE/C64/sdl_sym.vkm new file mode 100644 index 0000000..5571c6d --- /dev/null +++ b/VICE/C64/sdl_sym.vkm @@ -0,0 +1,233 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# SDL symbolic map for the C64, the SCPU64, and the C64DTV + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 32 /* 2 -> 2 */ +50 5 6 144 /* @ -> @ */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 32 /* 6 -> 6 */ +54 6 6 144 /* ^ -> ^ */ +55 3 0 32 /* 7 -> 7 */ +55 2 3 129 /* & -> & */ +56 3 3 32 /* 8 -> 8 */ +56 6 1 144 /* * -> * */ +57 4 0 32 /* 9 -> 9 */ +57 3 3 129 /* ( -> ( */ +48 4 3 32 /* 0 -> 0 */ +48 4 0 129 /* ) -> ) */ +45 5 3 32 /* Minus -> Minus */ +45 5 6 2192 /* _ -> _ */ +61 6 5 32 /* = -> = */ +61 5 0 144 /* + -> + */ +8 0 0 8 /* Backspace -> DEL */ +9 7 5 8192 /* Tab -> CBM */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 5 1 /* [ -> [ */ +93 6 2 1 /* ] -> ] */ +13 0 1 8 /* Return -> Return */ +306 7 2 16384 /* Left Ctrl -> Ctrl */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +59 6 2 32 /* ; -> ; */ +59 5 5 144 /* : -> : */ +39 3 0 33 /* ' -> ' */ +39 7 3 129 /* " -> " */ +96 3 0 33 /* ` -> ` */ +96 6 6 129 /* ~ -> Pi */ +92 6 0 32 /* \ -> Lira */ +92 5 3 129 /* | -> | */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 8 /* , -> , */ +46 5 4 8 /* . -> . */ +47 6 7 8 /* / -> / */ +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ +277 0 0 1 /* Insert -> INS */ +127 0 0 8 /* Delete -> DEL */ +279 7 1 8 /* End -> Left Arrow */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_sym_da.vkm b/VICE/C64/sdl_sym_da.vkm new file mode 100644 index 0000000..f25f6b7 --- /dev/null +++ b/VICE/C64/sdl_sym_da.vkm @@ -0,0 +1,263 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Symbolic Mapping, Danish Layout, C64, SDL, pc(105)-da keyboard + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + + +49 7 0 8 /* 1 -> 1 */ +50 7 3 40 /* 2 -> 2 */ +50 5 6 512 /* @ -> @ */ +51 1 0 40 /* 3 -> 3 */ +51 6 0 512 /* £ -> £ */ +52 1 3 40 /* 4 -> 4 */ +52 1 3 513 /* $ -> $ */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 40 /* 7 -> 7 */ +55 6 7 144 /* / -> / */ +56 3 3 40 /* 8 -> 8 */ +56 5 5 513 /* [ -> ] */ +57 4 0 40 /* 9 -> 9 */ +57 6 2 513 /* ] -> ] */ +48 4 3 40 /* 0 -> 0 */ +48 6 5 128 /* = -> = */ +43 5 0 40 /* + -> + */ +43 6 7 128 /* ? -> ? */ + +0 6 3 8 /* Home -> CLR/HOME */ + +8 0 0 8 /* Backspace -> DEL */ + +9 7 5 8192 /* Tab -> CBM */ +306 7 2 16384 /* Left Ctrl -> Ctrl */ + +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ + +229 5 6 40 /* (da) aa -> @ */ +229 6 6 512 /* (da) aa -> Arrow Up */ + + +301 1 7 64 /* Caps Lock -> Shift Lock */ + +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ + +230 6 2 32 /* (da) ae -> ; */ +230 5 5 128 /* (da) AE -> [ */ +248 5 5 32 /* (da) oe -> : */ +248 6 2 128 /* (da) OE -> ] */ + +39 6 1 32 /* * -> * */ +39 3 0 161 /* ' -> ' */ +39 6 6 513 /* ' -> Pi */ + + +13 0 1 8 /* Return -> Return */ + +304 1 7 2 /* Left Shift -> Left Shift */ + +60 5 7 33 /* < -> < */ +60 5 4 128 /* > -> > */ + +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ + +44 5 7 32 /* , -> , */ +44 6 2 144 /* ; -> ; */ +46 5 4 32 /* . -> . */ +46 5 5 144 /* : -> : */ +45 5 3 40 /* Minus -> Minus */ +45 7 1 128 /* Underscore -> Arrow Left */ + +303 6 4 4 /* Right Shift -> Right Shift */ + +32 7 4 8 /* Space -> Space */ + +27 7 7 8 /* ESC -> Run/Stop */ + +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ + +277 0 0 1 /* Insert -> INS */ +127 0 0 8 /* Delete -> DEL */ + +278 6 3 8 /* Home -> CLR/HOME */ + +273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ +275 0 2 8 /* Right -> CRSR RIGHT */ +276 0 2 1 /* Left -> CRSR LEFT */ + + +# Restore key mappings +280 -3 0 /* Page Up -> RESTORE */ + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ + +# EOF diff --git a/VICE/C64/sdl_sym_de.vkm b/VICE/C64/sdl_sym_de.vkm new file mode 100644 index 0000000..fc46173 --- /dev/null +++ b/VICE/C64/sdl_sym_de.vkm @@ -0,0 +1,317 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Symbolic Mapping, German Layout, C64, SDL, pc(105)-de keyboard + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +# keys that can't be mapped positionally are: +# (row0) pound (-> ), clr/home (-> home) +# (row1) arrow up (-> end), restore (-> page up) +# (row2) run/stop (-> escape) +# (row3) commodore (-> control) + +# extra keys are: +# clr/home (-> pos1) +# ins/del (-> delete) +# ins/del+shift (-> insert) +# arrow up (-> end) +# arrow up+shift (-> end+shift) + + +# keys that can't be mapped symbolically are: +# (row0) arrow left (-> end), pound (-> ), clr/home (-> home) +# (row1) restore (-> page up) +# (row2) run/stop (-> escape) +# (row3) commodore (-> control) + +# extra keys are: +# ins/del (-> delete) +# ins/del+shift (-> insert) +# arrow left (-> underscore, ssharp, altgr+~) +# arrow up+shift (-> altgr+m) +# f1 (-> page up) +# f7 (-> page down) +# : (-> oe) +# :+shift (-> OE, altgr+[) +# ; (-> ae) +# ;+shift (-> AE, altgr+]) +# @ (-> ue, altgr+Q) +# @+shift (-> UE) + +# some extra keys with AltGr +109 6 6 545 /* altr+M -> pi (shift+arrow up) */ +56 3 3 40 /* 8 -> 8 */ +# 512 + 1 alt-gr on host, shifted on c64 +56 5 5 513 /* altr+8 -> [ (shift+:) */ +57 4 0 40 /* 9 -> 9 */ +# 512 + 1 alt-gr on host, shifted on c64 +57 6 2 513 /* altr+9 -> ] (shift+;) */ +113 7 6 32 /* Q -> Q */ +# 512 + 32 alt-gr on host, not shifted on c64 +113 5 6 512 /* altr+Q -> @ */ +#60 3 5 545 /* altr+< -> | (shift+h) */ + +# not shifted on host, not shifted on c64 +45 5 3 32 /* - -> - */ +# 16+2048+128+32 shifted on host, not shifted but with CBM on C64 +45 5 6 2224 /* _ -> _ (cbm+@) */ + +94 6 6 8 /* ^ -> Up Arrow */ +# 94 6 6 17 /* -> Pi */ +223 6 0 32 /* (de) sz -> Pound */ +223 6 7 1 /* (de) shft+sz -> ? */ +180 7 1 8 /* (de) ? ` -> Left Arrow */ +8 0 0 8 /* Backspace -> Ins */ + +#9 7 2 8+16384 key is CTRL +9 7 2 16392 /* TAB -> Ctrl */ +252 5 6 8 /* (de) ue -> @ */ +# not shifted on host, not shifted on c64 +43 5 0 32 /* + -> + */ +# 128+16 shifted on host, not shifted on c64 +43 6 1 144 /* * -> * */ + +246 5 5 8 /* (de) oe -> [ */ +228 6 2 8 /* (de) ae -> ] */ +# not shifted on host, shift+3 on c64 +35 1 0 33 /* # -> # */ +# shifted on host, shift+7 on c64 +35 3 0 128 /* ' -> ' */ +13 0 1 8 /* Return -> Return */ + +# 32+1 not shifted on host, shifted on c64 +60 5 7 33 /* < -> < */ +# 128 shifted on host, shifted on c64 +60 5 4 128 /* > -> > */ + +# not shifted on host, not shifted on c64 +44 5 7 32 /* , -> , */ +# 128+16 shifted on host, not shifted on c64 +44 6 2 144 /* ; -> ; */ +# not shifted on host, not shifted on c64 +46 5 4 32 /* . -> . */ +# 128+16 shifted on host, not shifted on c64 +46 5 5 144 /* : -> : */ + +# key is right shift +303 6 4 4 /* Right Shift -> Right Shift */ +# key is left shift +304 1 7 2 /* Left Shift -> Left Shift */ +# key is shift lock +301 1 7 64 /* Caps Lock -> Shift Lock */ +# key is CBM 8+8192 +306 7 5 8200 /* Left Ctrl -> CBM */ + +32 7 4 8 /* Space -> Space */ + +27 7 7 8 /* ESC -> Run/Stop */ + +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ + +127 0 0 8 /* Ins -> Ins */ +277 0 0 1 /* Del -> Del */ +278 6 3 8 /* Pos1 -> CLR/HOME */ +279 7 1 8 /* End -> Left Arrow */ + +273 0 7 1 /* Up -> CRSR UP */ +274 0 7 8 /* Down -> CRSR DOWN */ +275 0 2 8 /* Right -> CRSR RIGHT */ +276 0 2 1 /* Left -> CRSR LEFT */ + +267 6 7 8 /* NumPad / -> / */ +268 6 1 8 /* NumPad * -> * */ +269 5 3 8 /* NumPad - -> - */ +270 5 0 8 /* NumPad + -> + */ +271 0 1 8 /* NP Return -> Return */ + +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +# not shifted on host, unshifted on C64 +55 3 0 32 /* 7 -> 7 */ +# shifted on host, deshifted on C64 128+16 +55 6 7 144 /* / -> / */ +# not shifted on host, unshifted on C64 +48 4 3 32 /* 0 -> 0 */ +# shifted on host, deshifted on C64 128+16 +48 6 5 144 /* = -> = */ + +97 1 2 8 /* A -> A */ +98 3 4 8 /* B -> B */ +99 2 4 8 /* C -> C */ +100 2 2 8 /* D -> D */ +101 1 6 8 /* E -> E */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +105 4 1 8 /* I -> I */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +109 4 4 8 /* M -> M */ +110 4 7 8 /* N -> N */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +#113 7 6 8 /* Q -> Q */ +114 2 1 8 /* R -> R */ +115 1 5 8 /* S -> S */ +116 2 6 8 /* T -> T */ +117 3 6 8 /* U -> U */ +118 3 7 8 /* V -> V */ +119 1 1 8 /* W -> W */ +120 2 7 8 /* X -> X */ +121 3 1 8 /* Y -> Y */ +122 1 4 8 /* Z -> Z */ + +# Restore key mappings +280 -3 0 /* Page Up -> RESTORE */ + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_sym_fr.vkm b/VICE/C64/sdl_sym_fr.vkm new file mode 100644 index 0000000..2296b67 --- /dev/null +++ b/VICE/C64/sdl_sym_fr.vkm @@ -0,0 +1,236 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# SDL symbolic map for the C64, the SCPU64, and the C64DTV + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +64 5 6 32 /* @ -> @ */ @/§ key (from nl symbolic keymap) +49 7 0 8 /* 1 -> 1 */ +50 7 3 32 /* 2 -> 2 */ +50 7 3 8 /* 2 -> 2 */ 2/" key (from nl symbolic keymap) +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 32 /* 6 -> 6 */ +54 6 6 144 /* ^ -> ^ */ +55 3 0 32 /* 7 -> 7 */ +55 2 3 129 /* & -> & */ +56 3 3 32 /* 8 -> 8 */ +56 6 1 144 /* * -> * */ +57 4 0 32 /* 9 -> 9 */ +57 3 3 129 /* ( -> ( */ +48 4 3 32 /* 0 -> 0 */ +48 4 0 129 /* ) -> ) */ +45 5 3 32 /* Minus -> Minus */ +45 5 6 2192 /* _ -> _ */ +61 6 5 32 /* = -> = */ +61 5 0 144 /* + -> + */ +8 0 0 8 /* Backspace -> DEL */ +9 7 5 8192 /* Tab -> CBM */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 5 1 /* [ -> [ */ +93 6 2 1 /* ] -> ] */ +42 6 1 8 /* * -> * */ asterisk/pipe key (from nl symbolic keymap) +36 6 0 8 /* $ -> Pound */ $ key (near enter without shift) +13 0 1 8 /* Return -> Return */ +306 7 2 16384 /* Left Ctrl -> Ctrl */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +59 6 2 32 /* ; -> ; */ +59 5 5 144 /* : -> : */ +39 3 0 33 /* ' -> ' */ +39 7 3 129 /* " -> " */ +96 7 1 32 /* ` -> Left Arrow */ +96 6 6 129 /* ~ -> Pi */ +92 6 0 32 /* \ -> Lira */ +92 5 3 129 /* | -> | */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 8 /* , -> , */ +46 5 4 8 /* . -> . */ +58 6 7 8 /* / -> / */ +176 6 0 32 /* ° -> Pound */ °/~ key (from symbolic nl keymap) +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ +277 0 0 1 /* Insert -> INS */ +127 0 0 8 /* Delete -> DEL */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_sym_it.vkm b/VICE/C64/sdl_sym_it.vkm new file mode 100644 index 0000000..006fe85 --- /dev/null +++ b/VICE/C64/sdl_sym_it.vkm @@ -0,0 +1,239 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# Symbolic Mapping, Italian Layout, C64, SDL, pc(105)-it keyboard + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ +51 1 0 32 /* 3 -> 3 */ +51 6 0 144 /* -> */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ +55 3 0 32 /* 7 -> 7 */ +55 6 7 144 /* / -> / */ +56 3 3 8 /* 8 -> 8 */ +57 4 0 8 /* 9 -> 9 */ +48 4 3 32 /* 0 -> 0 */ +48 6 5 144 /* = -> = */ +236 6 6 144 /* ^ -> ^ */ +45 5 3 32 /* Minus -> Minus */ +45 5 6 2192 /* _ -> _ */ +60 5 7 34 /* < -> < */ +60 5 4 128 /* > -> > */ +61 6 5 32 /* = -> = */ +61 5 0 144 /* + -> + */ +8 0 0 8 /* Backspace -> DEL */ +9 7 5 8192 /* Tab -> CBM */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +91 5 5 1 /* [ -> [ */ +93 6 2 1 /* ] -> ] */ +13 0 1 8 /* Return -> Return */ +306 7 2 16384 /* Left Ctrl -> Ctrl */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +59 6 2 32 /* ; -> ; */ +59 5 5 144 /* : -> : */ +39 3 0 33 /* ' -> ' */ +39 6 7 128 /* ? -> ? */ +96 7 1 32 /* ` -> Left Arrow */ +96 6 6 129 /* ~ -> Pi */ +92 7 1 0 /* \ -> Left Arrow */ +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 32 /* , -> , */ +44 6 2 144 /* ; -> ; */ +46 5 4 32 /* ; -> ; */ +46 5 5 144 /* : -> : */ +47 6 7 8 /* / -> / */ +224 1 0 2 /* -> # */ +242 5 6 0 /* -> @ */ +43 5 0 32 /* + -> + */ +43 6 1 176 /* * -> * */ +43 6 2 513 /* ] -> ] */ +232 5 5 513 /* [ -> [ */ +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ +277 0 0 1 /* Insert -> INS */ +127 0 0 8 /* Delete -> DEL */ + +# Restore key mappings +280 -3 0 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sdl_sym_nl.vkm b/VICE/C64/sdl_sym_nl.vkm new file mode 100644 index 0000000..385d3da --- /dev/null +++ b/VICE/C64/sdl_sym_nl.vkm @@ -0,0 +1,233 @@ +# VICE keyboard mapping file +# +# A Keyboard map is read in as patch to the current map. +# +# File format: +# - comment lines start with '#' +# - keyword lines start with '!keyword' +# - normal lines have 'keysym/scancode row column shiftflag' +# +# Keywords and their lines are: +# '!CLEAR' clear whole table +# '!INCLUDE filename' read file as mapping file +# '!LSHIFT row col' left shift keyboard row/column +# '!RSHIFT row col' right shift keyboard row/column +# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT) +# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT) +# for emulated keyboards that have only one shift key, set both LSHIFT +# and RSHIFT to the same row/col and use RSHIFT for VSHIFT and SHIFTL. +# '!LCTRL row col' left control keyboard row/column +# '!VCTRL ctrlkey' virtual control key (LCTRL) +# '!LCBM row col' left CBM keyboard row/column +# '!VCBM cbmkey' virtual CBM key (LCBM) +# '!UNDEF keysym' remove keysym from table +# +# Shiftflag can have these values, flags can be ORed to combine them: +# 0x0000 0 key is not shifted for this keysym/scancode +# 0x0001 1 key is combined with shift for this keysym/scancode +# 0x0002 2 key is left shift on emulated machine +# 0x0004 4 key is right shift on emulated machine (use only this one +# for emulated keyboards that have only one shift key) +# 0x0008 8 key can be shifted or not with this keysym/scancode +# 0x0010 16 deshift key for this keysym/scancode +# 0x0020 32 another definition for this keysym/scancode follows +# 0x0040 64 key is shift-lock on emulated machine +# 0x0080 128 shift modifier required on host +# 0x0100 256 key is used for an alternative keyboard mapping, e.g. C64 mode in x128 +# 0x0200 512 alt-r (alt-gr) modifier required on host +# 0x0400 1024 ctrl modifier required on host +# 0x0800 2048 key is combined with cbm for this keysym/scancode +# 0x1000 4096 key is combined with ctrl for this keysym/scancode +# 0x2000 8192 key is (left) cbm on emulated machine +# 0x4000 16384 key is (left) ctrl on emulated machine +# +# Negative row values: +# 'keysym -1 n' joystick keymap A, direction n +# 'keysym -2 n' joystick keymap B, direction n +# 'keysym -3 0' first RESTORE key +# 'keysym -3 1' second RESTORE key +# 'keysym -4 0' 40/80 column key (x128) +# 'keysym -4 1' CAPS (ASCII/DIN) key (x128) +# 'keysym -5 n' joyport keypad, key n (not supported in x128) +# +# Joystick direction values: +# 0 Fire +# 1 South/West +# 2 South +# 3 South/East +# 4 West +# 5 East +# 6 North/West +# 7 North +# 8 North/East +# +# Joyport keypad key layout: +# -------------------------- +# | 0 | 1 | 2 | 3 | 4 | +# -------------------------- +# | 5 | 6 | 7 | 8 | 9 | +# -------------------------- +# | 10 | 11 | 12 | 13 | 14 | +# -------------------------- +# | 15 | 16 | 17 | 18 | 19 | +# -------------------------- +# +# When a bigger spaced key is used, +# it uses the upper left most key value. + +# SDL symbolic map for the C64, the SCPU64, and the C64DTV + +# note: For some reason SDL does not get keyboard events for "dead keys" at all, +# so a "nodeadkeys" layout must be used. CAUTION: apparently SDL generates +# some tables internally at startup - switching the host layout while +# the emulator is running produces unpredictable results (broken keycodes) + +# C64 keyboard matrix: +# +# +-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D| +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 2| 5 % | R | D | 6 & | C | F | T | X | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 4| 9 ) | I | J | 0 | M | K | O | N | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 5| + | P | L | - | . > | : [ | @ | , < | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ +# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S | +# +-----+-----+-----+-----+-----+-----+-----+-----+-----+ + +# C64 Keyboard layout: +# +# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2 +# ctrl q w e r t y u i o p @ * ^ restore f3/f4 +# r/s SL a s d f g h j k l :[ ;] = return f5/f6 +# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8 +# space + +!CLEAR +!LSHIFT 1 7 +!RSHIFT 6 4 +!VSHIFT RSHIFT +!SHIFTL LSHIFT +!LCBM 7 5 +!VCBM LCBM +!LCTRL 7 2 +!VCTRL LCTRL + +27 7 7 8 /* ESC -> Run/Stop */ +64 5 6 32 /* @ -> @ */ @/§ key +64 7 1 0 /* § -> Left Arrow */ @/§ key +49 7 0 8 /* 1 -> 1 */ +50 7 3 8 /* 2 -> 2 */ 2/" key +51 1 0 8 /* 3 -> 3 */ +52 1 3 8 /* 4 -> 4 */ +53 2 0 8 /* 5 -> 5 */ +54 2 3 8 /* 6 -> 6 */ 6/& key +55 3 0 32 /* 7 -> 7 */ 7/_ key +55 6 1 1 /* _ -> - */ 7/_ key +56 3 3 8 /* 8 -> 8 */ 8/( key +57 4 0 8 /* 9 -> 9 */ 9/) key +48 4 3 32 /* 0 -> 0 */ 0/' key +48 3 0 1 /* ' -> ' */ 0/' key +47 6 7 8 /* / -> / */ slash/? key +176 6 0 32 /* ° -> Pound */ °/~ key +176 6 6 1 /* ~ -> Pi */ °/~ key +8 0 0 8 /* Backspace -> DEL */ +9 7 5 8200 /* Tab -> CBM */ +113 7 6 8 /* Q -> Q */ +119 1 1 8 /* W -> W */ +101 1 6 8 /* E -> E */ +114 2 1 8 /* R -> R */ +116 2 6 8 /* T -> T */ +121 3 1 8 /* Y -> Y */ +117 3 6 8 /* U -> U */ +105 4 1 8 /* I -> I */ +111 4 6 8 /* O -> O */ +112 5 1 8 /* P -> P */ +168 6 6 33 /* ¨ -> π pi */ ¨/^ key +168 6 6 0 /* ^ -> Up Arrow */ ¨/^ key +42 6 1 8 /* * -> * */ asterisk/pipe key +13 0 1 8 /* Return -> Return */ +306 7 2 16392 /* Left Ctrl -> Ctrl */ +97 1 2 8 /* A -> A */ +115 1 5 8 /* S -> S */ +100 2 2 8 /* D -> D */ +102 2 5 8 /* F -> F */ +103 3 2 8 /* G -> G */ +104 3 5 8 /* H -> H */ +106 4 2 8 /* J -> J */ +107 4 5 8 /* K -> K */ +108 5 2 8 /* L -> L */ +43 5 0 8 /* + -> + */ +180 3 0 33 /* ´ -> ' */ ´/` key +180 7 1 0 /* ` -> Left Arrow */ ´/` key +60 5 7 33 /* < -> < */ key +60 5 4 1 /* > -> > */ key +304 1 7 2 /* Left Shift -> Left Shift */ +301 1 7 64 /* Caps Lock -> Shift Lock */ +93 6 2 33 /* [ -> [ */ [/] key +93 5 5 1 /* ] -> ] */ [/] key +122 1 4 8 /* Z -> Z */ +120 2 7 8 /* X -> X */ +99 2 4 8 /* C -> C */ +118 3 7 8 /* V -> V */ +98 3 4 8 /* B -> B */ +110 4 7 8 /* N -> N */ +109 4 4 8 /* M -> M */ +44 5 7 32 /* , -> , */ ,/; key +44 6 2 0 /* ; -> ; */ ,/; key +46 5 4 32 /* . -> . */ ./: key +46 5 5 0 /* : -> : */ ./: key +45 5 3 32 /* - -> - */ -/= key +45 6 5 0 /* = -> = */ -/= key +303 6 4 4 /* Right Shift -> Right Shift */ +32 7 4 8 /* Space -> Space */ +282 0 4 8 /* F1 -> F1 */ +283 0 4 1 /* F2 -> F2 */ +284 0 5 8 /* F3 -> F3 */ +285 0 5 1 /* F4 -> F4 */ +286 0 6 8 /* F5 -> F5 */ +287 0 6 1 /* F6 -> F6 */ +288 0 3 8 /* F7 -> F7 */ +289 0 3 1 /* F8 -> F8 */ +278 6 3 8 /* Home -> CLR/HOME */ +273 0 7 1 /* Up -> CRSR UP */ +276 0 2 1 /* Left -> CRSR LEFT */ +275 0 2 8 /* Right -> CRSR RIGHT */ +274 0 7 8 /* Down -> CRSR DOWN */ +277 0 0 1 /* Insert -> INS */ +127 0 0 8 /* Delete -> DEL */ + +# Restore key mappings +280 -3 0 +#0 -3 1 + +# Joyport attached keypad key mappings +300 -5 0 /* NumLock -> keypad x0 */ +263 -5 1 /* NumPad 7 -> keypad 7 */ +264 -5 2 /* NumPad 8 -> keypad 8 */ +265 -5 3 /* NumPad 9 -> keypad 9 */ +267 -5 4 /* NumPad / -> keypad / */ +302 -5 5 /* ScrollLock -> keypad x1 */ +260 -5 6 /* NumPad 4 -> keypad 4 */ +261 -5 7 /* NumPad 5 -> keypad 5 */ +262 -5 8 /* NumPad 6 -> keypad 6 */ +268 -5 9 /* NumPad * -> keypad * */ +317 -5 10 /* SysReq -> keypad x2 */ +257 -5 11 /* NumPad 1 -> keypad 1 */ +258 -5 12 /* NumPad 2 -> keypad 2 */ +259 -5 13 /* NumPad 3 -> keypad 3 */ +269 -5 14 /* NumPad - -> keypad - */ +316 -5 15 /* PrtScr -> keypad x3 */ +256 -5 16 /* NumPad 0 -> keypad 0 */ +266 -5 17 /* NumPad , -> keypad . */ +271 -5 18 /* NumPad Enter -> keypad enter */ +270 -5 19 /* NumPad + -> keypad + */ diff --git a/VICE/C64/sxkernal b/VICE/C64/sxkernal new file mode 100644 index 0000000..b4f730c Binary files /dev/null and b/VICE/C64/sxkernal differ diff --git a/VICE/C64/vice.vpl b/VICE/C64/vice.vpl new file mode 100644 index 0000000..4944251 --- /dev/null +++ b/VICE/C64/vice.vpl @@ -0,0 +1,54 @@ +# +# VICE Palette file +# +# Syntax: +# Red Green Blue +# + +# Black +00 00 00 + +# White +FD FE FC + +# Red +BE 1A 24 + +# Cyan +30 E6 C6 + +# Purple +B4 1A E2 + +# Green +1F D2 1E + +# Blue +21 1B AE + +# Yellow +DF F6 0A + +# Orange +B8 41 04 + +# Brown +6A 33 04 + +# Light Red +FE 4A 57 + +# Dark Gray +42 45 40 + +# Medium Gray +70 74 6F + +# Light Green +59 FE 59 + +# Light Blue +5F 53 FE + +# Light Gray +A4 A7 A2 diff --git a/VICE/SDL2.dll b/VICE/SDL2.dll new file mode 100644 index 0000000..b162cd9 Binary files /dev/null and b/VICE/SDL2.dll differ diff --git a/VICE/SDL2_image.dll b/VICE/SDL2_image.dll new file mode 100644 index 0000000..29e9387 Binary files /dev/null and b/VICE/SDL2_image.dll differ diff --git a/VICE/libFLAC-8.dll b/VICE/libFLAC-8.dll new file mode 100644 index 0000000..021746a Binary files /dev/null and b/VICE/libFLAC-8.dll differ diff --git a/VICE/libLerc.dll b/VICE/libLerc.dll new file mode 100644 index 0000000..00995de Binary files /dev/null and b/VICE/libLerc.dll differ diff --git a/VICE/libdeflate.dll b/VICE/libdeflate.dll new file mode 100644 index 0000000..ad57e3f Binary files /dev/null and b/VICE/libdeflate.dll differ diff --git a/VICE/libgcc_s_dw2-1.dll b/VICE/libgcc_s_dw2-1.dll new file mode 100644 index 0000000..405a70d Binary files /dev/null and b/VICE/libgcc_s_dw2-1.dll differ diff --git a/VICE/libgif-7.dll b/VICE/libgif-7.dll new file mode 100644 index 0000000..8ddcf56 Binary files /dev/null and b/VICE/libgif-7.dll differ diff --git a/VICE/libgomp-1.dll b/VICE/libgomp-1.dll new file mode 100644 index 0000000..798d539 Binary files /dev/null and b/VICE/libgomp-1.dll differ diff --git a/VICE/libjbig-0.dll b/VICE/libjbig-0.dll new file mode 100644 index 0000000..435bbf7 Binary files /dev/null and b/VICE/libjbig-0.dll differ diff --git a/VICE/libjpeg-8.dll b/VICE/libjpeg-8.dll new file mode 100644 index 0000000..f88e47c Binary files /dev/null and b/VICE/libjpeg-8.dll differ diff --git a/VICE/liblzma-5.dll b/VICE/liblzma-5.dll new file mode 100644 index 0000000..9bb3ef2 Binary files /dev/null and b/VICE/liblzma-5.dll differ diff --git a/VICE/libmp3lame-0.dll b/VICE/libmp3lame-0.dll new file mode 100644 index 0000000..7f47c17 Binary files /dev/null and b/VICE/libmp3lame-0.dll differ diff --git a/VICE/libogg-0.dll b/VICE/libogg-0.dll new file mode 100644 index 0000000..8eb2908 Binary files /dev/null and b/VICE/libogg-0.dll differ diff --git a/VICE/libpng16-16.dll b/VICE/libpng16-16.dll new file mode 100644 index 0000000..19f7fb1 Binary files /dev/null and b/VICE/libpng16-16.dll differ diff --git a/VICE/libssp-0.dll b/VICE/libssp-0.dll new file mode 100644 index 0000000..0b06a4b Binary files /dev/null and b/VICE/libssp-0.dll differ diff --git a/VICE/libstdc++-6.dll b/VICE/libstdc++-6.dll new file mode 100644 index 0000000..dde4bcd Binary files /dev/null and b/VICE/libstdc++-6.dll differ diff --git a/VICE/libtiff-5.dll b/VICE/libtiff-5.dll new file mode 100644 index 0000000..08254bb Binary files /dev/null and b/VICE/libtiff-5.dll differ diff --git a/VICE/libvorbis-0.dll b/VICE/libvorbis-0.dll new file mode 100644 index 0000000..0c5e345 Binary files /dev/null and b/VICE/libvorbis-0.dll differ diff --git a/VICE/libvorbisenc-2.dll b/VICE/libvorbisenc-2.dll new file mode 100644 index 0000000..0989c6a Binary files /dev/null and b/VICE/libvorbisenc-2.dll differ diff --git a/VICE/libvorbisfile-3.dll b/VICE/libvorbisfile-3.dll new file mode 100644 index 0000000..4292a1c Binary files /dev/null and b/VICE/libvorbisfile-3.dll differ diff --git a/VICE/libwebp-7.dll b/VICE/libwebp-7.dll new file mode 100644 index 0000000..4f81c97 Binary files /dev/null and b/VICE/libwebp-7.dll differ diff --git a/VICE/libwinpthread-1.dll b/VICE/libwinpthread-1.dll new file mode 100644 index 0000000..77edd78 Binary files /dev/null and b/VICE/libwinpthread-1.dll differ diff --git a/VICE/libzstd.dll b/VICE/libzstd.dll new file mode 100644 index 0000000..1946e31 Binary files /dev/null and b/VICE/libzstd.dll differ diff --git a/VICE/x64sc.exe b/VICE/x64sc.exe new file mode 100644 index 0000000..74b95bf Binary files /dev/null and b/VICE/x64sc.exe differ diff --git a/VICE/zlib1.dll b/VICE/zlib1.dll new file mode 100644 index 0000000..5d388d2 Binary files /dev/null and b/VICE/zlib1.dll differ diff --git a/disk_bbcmaster/pop-beeb.ssd b/disk_bbcmaster/pop-beeb.ssd index a0de9fe..ef77e4e 100644 Binary files a/disk_bbcmaster/pop-beeb.ssd and b/disk_bbcmaster/pop-beeb.ssd differ diff --git a/disk_c64/pop.crt b/disk_c64/pop.crt new file mode 100644 index 0000000..d8a3186 Binary files /dev/null and b/disk_c64/pop.crt differ diff --git a/docs/ChangeLog.txt b/docs/ChangeLog.txt index 514da19..a365aa2 100644 --- a/docs/ChangeLog.txt +++ b/docs/ChangeLog.txt @@ -1,3 +1,10 @@ +v1.0 (November 28, 2022) - Norbert de Jonge +-------------------- ++ The program can now also edit PoP1 for C64 levels! ++ Support for kieranhj 1.1 (B1). +* Workaround for ancient sdl-ttf versions. +* Newer AppleWin, for its -h1. + v0.9b (April 1, 2018) - Norbert de Jonge -------------------- + The program can now also edit PoP1 for BBC Master levels! diff --git a/docs/README.txt b/docs/README.txt index adc1b05..e0b5c11 100644 --- a/docs/README.txt +++ b/docs/README.txt @@ -9,11 +9,11 @@ ===[1 - ABOUT]================================================================= -leapop v0.9b (April 2018) -Copyright (C) 2017, 2018 Norbert de Jonge +leapop v1.0 (November 2022) +Copyright (C) 2017-2022 Norbert de Jonge -A level editor of Prince of Persia for the Apple II and BBC Master. -The leapop website can be found at [ http://www.norbertdejonge.nl/leapop/ ]. +A level editor of Prince of Persia for the Apple II, BBC Master, and C64. +The leapop website can be found at [ https://github.com/EndeavourAccuracy/leapop ]. ===[2 - LICENSE/DISCLAIMER]==================================================== @@ -32,12 +32,13 @@ The Bitstream Vera font by Jim Lyles is © Bitstream, Inc. The Xbox icons are © Jeff Jenkins, CC BY 3.0. AppleWin is © AppleWin Team, GPLv2+. B-em is © Tom Walker et al., GPLv2 +VICE is © Jarkko Sonninen et al., GPLv2+. ===[3 - USAGE]================================================================= My apoplexy level editor uses the same GUI. Its instructional videos are available at: -http://www.norbertdejonge.nl/apoplexy/ +https://apoplexy.github.io/apoplexysite/ The Apple II disk image included is a 3.5" in ProDOS sector order. It was built from: @@ -82,14 +83,17 @@ https://www.apple.asimov.net/images/games/collections/san_inc_prodos/ The included BBC Master disk image was obtained from: https://github.com/kieranhj/pop-beeb/ +The included C64 disk image was obtained from: +https://csdb.dk/release/?id=102540 + ===[4 - FEEDBACK]============================================================== -If leapop crashes, gets compilation errors or crashes while building, send an e-mail to [ mail@norbertdejonge.nl ]. Make sure to describe exactly what actions triggered the bug and the precise symptoms of the bug. If possible, also include: 'uname -a', 'gcc -v', 'sdl2-config --version', and 'leapop --version'. +If leapop crashes, gets compilation errors or crashes while building, send an e-mail to [ nlmdejonge@gmail.com ]. Make sure to describe exactly what actions triggered the bug and the precise symptoms of the bug. If possible, also include: 'uname -a', 'gcc -v', 'sdl2-config --version', and 'leapop --version'. ===[5 - DID YOU CREATE NEW LEVELS?]============================================ Feel free to share your work: -http://forum.princed.org/ +https://forum.princed.org/ ===[6 - (RE)COMPILING]========================================================= @@ -107,9 +111,9 @@ Windows (32-bit) 1.1 Download -http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/ +https://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/ or -http://downloads.sourceforge.net/project/orwelldevcpp/Setup%20Releases/ +https://downloads.sourceforge.net/project/orwelldevcpp/Setup%20Releases/ Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe 1.2 Install @@ -120,11 +124,11 @@ Simply run the executable. 2.1 Download -http://libsdl.org/release/ +https://libsdl.org/release/ SDL2-devel-2.0.7-mingw.tar.gz -http://libsdl.org/projects/SDL_ttf/release/ +https://libsdl.org/projects/SDL_ttf/release/ SDL2_ttf-devel-2.0.14-mingw.tar.gz -http://libsdl.org/projects/SDL_image/release/ +https://libsdl.org/projects/SDL_image/release/ SDL2_image-devel-2.0.2-mingw.tar.gz 2.2 Install @@ -147,6 +151,7 @@ Go to: File->New->Project... Basic->Console Application C Project Name: leapop +Save leapop.dev to the leapop directory. Go to: Project->Remove From Project... Select main.c and press Delete. @@ -169,10 +174,10 @@ In the Linker field, add: -l"SDL2_ttf.dll" Go to: Project->Project Options...->Directories -Select the tab: Include Directories -Add: C:\Program Files (x86)\Dev-Cpp\MinGW64\i686-w64-mingw32\include\SDL2 Select the tab: Library Directories Add: C:\Program Files (x86)\Dev-Cpp\MinGW64\i686-w64-mingw32\lib +Select the tab: Include Directories +Add: C:\Program Files (x86)\Dev-Cpp\MinGW64\i686-w64-mingw32\include\SDL2 Go to: Tools->Compiler Options...->Directories Select the tab: Binaries diff --git a/docs/gpl.txt b/docs/gpl.txt index 94a9ed0..f288702 100644 --- a/docs/gpl.txt +++ b/docs/gpl.txt @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. diff --git a/docs/keys.txt b/docs/keys.txt index c5f4818..0d96f54 100644 --- a/docs/keys.txt +++ b/docs/keys.txt @@ -2,7 +2,7 @@ MAIN SCREEN --------------------------------------------------------------------------- 0-9 Shortcuts for various tiles. -d Start the level in AppleWin/B-em. +d Start the level in AppleWin/B-em/VICE. e Go to the events screen. f (and Alt + Enter/Return/Space) Toggle fullscreen mode. h Flip the room horizontally. @@ -37,7 +37,7 @@ Ctrl+v Paste the room. --------------------------------------------------------------------------- ROOM LINKS SCREEN --------------------------------------------------------------------------- -d Start the level in AppleWin/B-em. +d Start the level in AppleWin/B-em/VICE. e Go to the events screen. q (and Escape) Go to the main screen. r Modify broken room links. @@ -60,7 +60,7 @@ Arrow keys Select adjacent room. --------------------------------------------------------------------------- EVENTS SCREEN --------------------------------------------------------------------------- -d Start the level in AppleWin/B-em. +d Start the level in AppleWin/B-em/VICE. n Check the box under N. q (and Escape) Go to the main screen. r Go to the room links screen. diff --git a/leapop.c b/leapop.c index 08410a0..e96d3f6 100644 --- a/leapop.c +++ b/leapop.c @@ -1,5 +1,6 @@ -/* leapop v0.9b (April 2018) - * Copyright (C) 2017, 2018 Norbert de Jonge +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* leapop v1.0 (November 2022) + * Copyright (C) 2017-2022 Norbert de Jonge * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -55,8 +56,8 @@ #define EXIT_NORMAL 0 #define EXIT_ERROR 1 #define EDITOR_NAME "leapop" -#define EDITOR_VERSION "v0.9b (April 2018)" -#define COPYRIGHT "Copyright (C) 2018 Norbert de Jonge" +#define EDITOR_VERSION "v1.0 (November 2022)" +#define COPYRIGHT "Copyright (C) 2022 Norbert de Jonge" #define LEVEL_SIZE 2304 #define LEVELS 15 #define ROOMS 24 @@ -66,10 +67,12 @@ #define BACKUP_A DISK_DIR_A SLASH "disk.bak" #define DISK_DIR_B "disk_bbcmaster" #define BACKUP_B DISK_DIR_B SLASH "disk.bak" +#define DISK_DIR_C "disk_c64" +#define BACKUP_C DISK_DIR_C SLASH "disk.bak" #define MAX_PATHFILE 200 #define MAX_TOWRITE 720 -#define SCREEN_WIDTH 560 + 2 + 50 /*** 612 ***/ -#define SCREEN_HEIGHT 384 + 2 + 75 /*** 461 ***/ +#define WINDOW_WIDTH 560 + 2 + 50 /*** 612 ***/ +#define WINDOW_HEIGHT 384 + 2 + 75 /*** 461 ***/ #define MAX_IMG 200 #define MAX_CON 30 #define REFRESH_PROG 25 /*** That is 40 fps (1000/25). ***/ @@ -103,11 +106,23 @@ #define A1_POP_OFFSET_1 0x405 #define A1_POP_OFFSET_2 0x47A #define A1_POP_TEXT "PRINCEUNP" -/*** BBC Master: kieranhj (B0) ***/ +/*** BBC Master: kieranhj 1.0 (B0) ***/ #define B0_POPBBCM_OFFSET 0 #define B0_POPBBCM_TEXT "POP BEEB" #define B0_VANDB_OFFSET 0x26F0 +/*** v1.0 2018-03-29 22:00 kc ***/ #define B0_VANDB_TEXT "\x10\x18\x03\x29\x22\x00\x6B\x63" +/*** BBC Master: kieranhj 1.1 (B1) ***/ +#define B1_POPBBCM_OFFSET 0 +#define B1_POPBBCM_TEXT "POP BEEB" +#define B1_VANDB_OFFSET 0x26F0 +/*** v1.1 2018-04-01 20:35 kc ***/ +#define B1_VANDB_TEXT "\x11\x18\x04\x01\x20\x35\x6B\x63" +/*** C64: mrsid (C0) ***/ +#define C0_C64CART_OFFSET 0x00 +#define C0_C64CART_TEXT "C64 CARTRIDGE" +#define C0_DATE_OFFSET 0x688C1 +#define C0_DATE_TEXT "05/11/2011" #define BROKEN_ROOM_X 355 #define BROKEN_ROOM_Y 79 @@ -168,6 +183,7 @@ unsigned char arLevel[LEVEL_SIZE + 2]; int iLevelRead; char sPathFileA[MAX_PATHFILE + 2]; char sPathFileB[MAX_PATHFILE + 2]; +char sPathFileC[MAX_PATHFILE + 2]; char sPathFile[MAX_PATHFILE + 2]; int iChanged; int iScreen; @@ -237,10 +253,13 @@ int iEventHover; int iHomeComputer; int iDiskImageA; int iDiskImageB; +int iDiskImageC; int iAppleII; int iOnAppleII; int iBBCMaster; int iOnBBCMaster; +int iC64; +int iOnC64; int iHomeComputerActive; int iModified; @@ -267,7 +286,8 @@ static const int arDefaultEnv2[TABS_LEVEL] = { 0x00, 0x00, 0x00, 0x00, 0x01, 0x0 /* The following offsets are for: * ...A[] = { adamgreen (A0), peterferrie (A1) } - * ...B[] = { kieranhj (B0) } + * ...B[] = { kieranhj 1.0 (B0), kieranhj 1.1 (B1) } + * ...C[] = { mrsid (C0) } * 0x00 = unused */ static const unsigned long arLevelOffsetsA[][15] = /*** 0 - 14 ***/ @@ -325,24 +345,75 @@ static const unsigned long arLevelOffsetsB[][15] = /*** 0 - 14 ***/ 0x24200 + (12 * 0xA00), 0x24200 + (13 * 0xA00), 0x24200 + (14 * 0xA00) + }, + { + 0x24200 + (0 * 0xA00), + 0x24200 + (1 * 0xA00), + 0x24200 + (2 * 0xA00), + 0x24200 + (3 * 0xA00), + 0x24200 + (4 * 0xA00), + 0x24200 + (5 * 0xA00), + 0x24200 + (6 * 0xA00), + 0x24200 + (7 * 0xA00), + 0x24200 + (8 * 0xA00), + 0x24200 + (9 * 0xA00), + 0x24200 + (10 * 0xA00), + 0x24200 + (11 * 0xA00), + 0x24200 + (12 * 0xA00), + 0x24200 + (13 * 0xA00), + 0x24200 + (14 * 0xA00) + } +}; +static const unsigned long arLevelOffsetsC[][15] = /*** 0 - 14 ***/ +{ + { + 0x00, + 0x100D0, + 0x109D0, + 0x112D0, + 0x140F0, + 0x149F0, + 0x152F0, + 0x18110, + 0x18A10, + 0x19310, + 0x1C130, + 0x1CA30, + 0x1D330, + 0x20150, + 0x20A50 } }; +/* In theory, ulStartLevelA for A1 could be set to 0x7343, but this only + * seems to work for level 2. Perhaps because of packing. Additionally, + * 0x731A might skip the intro. And the ProDOS info, by changing 9D to BD at + * 0x1638, 0x1643, 0x164E, 0x1659. + */ static const unsigned long ulSkipIntroA[] = { 0x00, 0x00 }; -static const unsigned long ulSkipIntroB[] = { 0x428 }; +static const unsigned long ulSkipIntroB[] = { 0x428, 0x428 }; +static const unsigned long ulSkipIntroC[] = { 0x00 }; static const unsigned long ulStartLevelA[] = { 0x00, 0x00 }; -static const unsigned long ulStartLevelB[] = { 0x12F9 }; +static const unsigned long ulStartLevelB[] = { 0x12F9, 0x12F9 }; +static const unsigned long ulStartLevelC[] = { 0x00 }; static const unsigned long ulSavedLevelA[] = { 0x43600, 0x00 }; -static const unsigned long ulSavedLevelB[] = { 0x00 }; +static const unsigned long ulSavedLevelB[] = { 0x00, 0x00 }; +static const unsigned long ulSavedLevelC[] = { 0x00 }; +/*** A5 7C 30 04 A9 40 85 7D ***/ static const unsigned long ulCopyProtA[] = { 0x19497, 0x1BA97 }; -static const unsigned long ulCopyProtB[] = { 0x00 }; +static const unsigned long ulCopyProtB[] = { 0x00, 0x00 }; +static const unsigned long ulCopyProtC[] = { 0x00 }; static const unsigned long ulPrinceHPA[] = { 0x7258, 0xA058 }; -static const unsigned long ulPrinceHPB[] = { 0x14CB }; +static const unsigned long ulPrinceHPB[] = { 0x14CB, 0x14CB }; +static const unsigned long ulPrinceHPC[] = { 0x00 }; /*** Inaccessible. ***/ static const unsigned long ulShadowHPA[] = { 0x15F44, 0x18B44 }; -static const unsigned long ulShadowHPB[] = { 0x00 }; +static const unsigned long ulShadowHPB[] = { 0x00, 0x00 }; +static const unsigned long ulShadowHPC[] = { 0x00 }; static const unsigned long ulChomperDelayA[] = { 0x19E9A, 0x1C29A }; -static const unsigned long ulChomperDelayB[] = { 0x00 }; +static const unsigned long ulChomperDelayB[] = { 0x00, 0x00 }; +static const unsigned long ulChomperDelayC[] = { 0x00 }; static const unsigned long ulMouseDelayA[] = { 0x79B8, 0xA7BB }; -static const unsigned long ulMouseDelayB[] = { 0x00 }; +static const unsigned long ulMouseDelayB[] = { 0x00, 0x00 }; +static const unsigned long ulMouseDelayC[] = { 0x00 }; /*** Defaults, as used in arDefaultGuard[][]: 4B 64 4B 4B 4B 32 64 DC 00 3C 28 3C strike prob. @@ -388,23 +459,51 @@ static const unsigned long ulGuardB[][TABS_GUARD] = 0x00, 0x00, 0x00 + }, + { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00 + } +}; +static const unsigned long ulGuardC[][TABS_GUARD] = +{ + { + 0xEC42, + 0xEC4E, + 0xEC5A, + 0xEC66, + 0xEC72, + 0xEC7E, + 0xEC8A, + 0xEC96 } }; /*** 04 03 03 03 03 04 05 04 04 05 05 05 04 06 (01) ***/ static const unsigned long ulGuardHPA[] = { 0x15A7C, 0x1867C }; -static const unsigned long ulGuardHPB[] = { 0x00 }; +static const unsigned long ulGuardHPB[] = { 0x00, 0x00 }; +static const unsigned long ulGuardHPC[] = { 0xECA2 }; /*** 01 00 00 00 01 01 01 00 00 00 01 01 00 00 (60) ***/ static const unsigned long ulGuardUniformA[] = { 0x15A8A, 0x1868A }; -static const unsigned long ulGuardUniformB[] = { 0x00 }; +static const unsigned long ulGuardUniformB[] = { 0x00, 0x00 }; +static const unsigned long ulGuardUniformC[] = { 0x00 }; /*** 00 00 00 01 02 02 03 02 02 02 02 02 04 05 (05) ***/ static const unsigned long ulGuardSpriteA[] = { 0x1A8D5, 0x1CCD5 }; -static const unsigned long ulGuardSpriteB[] = { 0x114A }; +static const unsigned long ulGuardSpriteB[] = { 0x114A, 0x114A }; +static const unsigned long ulGuardSpriteC[] = { 0x00 }; /*** 00 00 00 00 01 01 01 02 02 02 01 01 02 02 01 ***/ static const unsigned long ulEnv1A[] = { 0x1A8B7, 0x1CCB7 }; -static const unsigned long ulEnv1B[] = { 0x00 }; +static const unsigned long ulEnv1B[] = { 0x00, 0x00 }; +static const unsigned long ulEnv1C[] = { 0x00 }; /*** 00 00 00 00 01 01 01 02 02 02 01 01 02 02 01 ***/ static const unsigned long ulEnv2A[] = { 0x1A8C6, 0x1CCC6 }; -static const unsigned long ulEnv2B[] = { 0x00 }; +static const unsigned long ulEnv2B[] = { 0x00, 0x00 }; +static const unsigned long ulEnv2C[] = { 0x00 }; int iEXEGuard[TABS_GUARD + 2][12 + 2]; int iEXEGuardHP[TABS_LEVEL + 2]; @@ -496,7 +595,7 @@ SDL_Texture *imgnexton_0; SDL_Texture *imgnexton_1; SDL_Texture *imgprevoff; SDL_Texture *imgnextoff; -SDL_Texture *imgbara, *imgbarb; +SDL_Texture *imgbara, *imgbarb, *imgbarc; SDL_Texture *imgextras[10 + 2]; SDL_Texture *imgroomson_0; SDL_Texture *imgroomson_1; @@ -557,6 +656,7 @@ SDL_Texture *imgeventh; SDL_Texture *imghc; SDL_Texture *imghcadis, *imghcaoff, *imghcaon, *imghcalb; SDL_Texture *imghcbdis, *imghcboff, *imghcbon, *imghcblb; +SDL_Texture *imghccdis, *imghccoff, *imghccon, *imghcclb; struct sample { Uint8 *data; @@ -567,6 +667,7 @@ struct sample { void ShowUsage (void); int GetPathFileA (void); int GetPathFileB (void); +int GetPathFileC (void); void LoadLevels (int iAtLevel); void SaveLevels (void); void PrintTileName (int iLevel, int iRoom, int iTile, int iTileValue); @@ -754,6 +855,11 @@ int main (int argc, char *argv[]) { iHomeComputer = 2; } + else if ((strcmp (argv[iArgLoop], "-c") == 0) || + (strcmp (argv[iArgLoop], "--c64") == 0)) + { + iHomeComputer = 3; + } else { ShowUsage(); @@ -763,6 +869,7 @@ int main (int argc, char *argv[]) iAppleII = GetPathFileA(); iBBCMaster = GetPathFileB(); + iC64 = GetPathFileC(); srand ((unsigned)time(&tm)); @@ -799,6 +906,7 @@ void ShowUsage (void) printf (" -k, --keyboard do not use a game controller\n"); printf (" -a, --appleii edit Apple II levels\n"); printf (" -b, --bbcmaster edit BBC Master levels\n"); + printf (" -c, --c64 edit C64 levels\n"); printf ("\n"); exit (EXIT_NORMAL); } @@ -986,7 +1094,7 @@ int GetPathFileB (void) return (0); } - /*** Which disk image: kieranhj (B0)? ***/ + /*** Which disk image: kieranhj 1.0 (B0) or kieranhj 1.1 (B1)? ***/ iDiskImageB = -1; iFd = open (sPathFileB, O_RDONLY|O_BINARY); if (iFd == -1) @@ -995,7 +1103,7 @@ int GetPathFileB (void) sPathFileB, strerror (errno)); return (0); } - /*** B0 version (kieranhj) ***/ + /*** B0 version (kieranhj 1.0) ***/ if (iDiskImageB == -1) { iVerify[1] = Verify (iFd, B0_POPBBCM_OFFSET, B0_POPBBCM_TEXT); @@ -1003,7 +1111,18 @@ int GetPathFileB (void) if ((iVerify[1] == 1) && (iVerify[2] == 1)) { iDiskImageB = 0; - PrIfDe ("[ INFO ] kieranhj (B0)\n"); + PrIfDe ("[ INFO ] kieranhj 1.0 (B0)\n"); + } + } + /*** B1 version (kieranhj 1.1) ***/ + if (iDiskImageB == -1) + { + iVerify[1] = Verify (iFd, B1_POPBBCM_OFFSET, B1_POPBBCM_TEXT); + iVerify[2] = Verify (iFd, B1_VANDB_OFFSET, B1_VANDB_TEXT); + if ((iVerify[1] == 1) && (iVerify[2] == 1)) + { + iDiskImageB = 1; + PrIfDe ("[ INFO ] kieranhj 1.1 (B1)\n"); } } close (iFd); @@ -1021,6 +1140,107 @@ int GetPathFileB (void) } } /*****************************************************************************/ +int GetPathFileC (void) +/*****************************************************************************/ +{ + int iFound; + DIR *dDir; + struct dirent *stDirent; + char sExtension[100 + 2]; + char sWarning[MAX_WARNING + 2]; + int iFd; + int iVerify[10 + 2]; + + iFound = 0; + + dDir = opendir (DISK_DIR_C); + if (dDir == NULL) + { + printf ("[ WARN ] Cannot open directory \"%s\": %s!\n", + DISK_DIR_C, strerror (errno)); + return (0); + } + + while ((stDirent = readdir (dDir)) != NULL) + { + if (iFound == 0) + { + if ((strcmp (stDirent->d_name, ".") != 0) && + (strcmp (stDirent->d_name, "..") != 0)) + { + snprintf (sExtension, 100, "%s", strrchr (stDirent->d_name, '.')); + if ((toupper (sExtension[1]) == 'C') && + (toupper (sExtension[2]) == 'R') && + (toupper (sExtension[3]) == 'T')) + { + iFound = 1; + snprintf (sPathFileC, MAX_PATHFILE, "%s%s%s", DISK_DIR_C, SLASH, + stDirent->d_name); + if (iDebug == 1) + { + printf ("[ OK ] Found C64 disk image \"%s\".\n", + sPathFileC); + } + } + } + } + } + + closedir (dDir); + + if (iFound == 0) + { + snprintf (sWarning, MAX_WARNING, "Cannot find a .crt disk image in" + " directory \"%s\"!", DISK_DIR_C); + printf ("[ WARN ] %s\n", sWarning); + SDL_ShowSimpleMessageBox (SDL_MESSAGEBOX_ERROR, + "Warning", sWarning, NULL); + return (0); + } + + /*** Is the file accessible? ***/ + if (access (sPathFileC, R_OK|W_OK) == -1) + { + printf ("[ WARN ] Cannot access \"%s\": %s!\n", + sPathFileC, strerror (errno)); + return (0); + } + + /*** Which disk image: mrsid (C0)? ***/ + iDiskImageC = -1; + iFd = open (sPathFileC, O_RDONLY|O_BINARY); + if (iFd == -1) + { + printf ("[ WARN ] Could not open \"%s\": %s!\n", + sPathFileC, strerror (errno)); + return (0); + } + /*** C0 version (mrsid) ***/ + if (iDiskImageC == -1) + { + iVerify[1] = Verify (iFd, C0_C64CART_OFFSET, C0_C64CART_TEXT); + iVerify[2] = Verify (iFd, C0_DATE_OFFSET, C0_DATE_TEXT); + if ((iVerify[1] == 1) && (iVerify[2] == 1)) + { + iDiskImageC = 0; + PrIfDe ("[ INFO ] mrsid (C0)\n"); + } + } + close (iFd); + + if (iDiskImageC == -1) + { + snprintf (sWarning, MAX_WARNING, "File %s is not a PoP1 for C64" + " disk image!", sPathFileC); + printf ("[ WARN ] %s\n", sWarning); + SDL_ShowSimpleMessageBox (SDL_MESSAGEBOX_ERROR, + "Warning", sWarning, NULL); + return (0); + } else { + return (1); + } +} +/*****************************************************************************/ void LoadLevels (int iAtLevel) /*****************************************************************************/ { @@ -1077,6 +1297,9 @@ void LoadLevels (int iAtLevel) case 2: iOffsetStart = arLevelOffsetsB[iDiskImageB][iLevelLoop - 1]; break; + case 3: + iOffsetStart = arLevelOffsetsC[iDiskImageC][iLevelLoop - 1]; + break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } lseek (iFd, iOffsetStart, SEEK_SET); @@ -1382,6 +1605,9 @@ void SaveLevels (void) case 2: iOffsetStart = arLevelOffsetsB[iDiskImageB][iLevelLoop - 1]; break; + case 3: + iOffsetStart = arLevelOffsetsC[iDiskImageC][iLevelLoop - 1]; + break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } lseek (iFd, iOffsetStart, SEEK_SET); @@ -1395,15 +1621,20 @@ void SaveLevels (void) cChecksum = ChecksumOrWrite (-1, iLevel); - ChecksumOrWrite (iFd, iLevel); + if ((iHomeComputer == 3) && (iLevel == 15)) + { + /*** The C64 port has no demo level. ***/ + } else { + ChecksumOrWrite (iFd, iLevel); + } } /*** Workaround for copy-protection. ***/ switch (iHomeComputer) { - /*** A5 7C 30 04 A9 40 85 7D ***/ case 1: iOffsetStart = ulCopyProtA[iDiskImageA]; break; case 2: iOffsetStart = ulCopyProtB[iDiskImageB]; break; + case 3: iOffsetStart = ulCopyProtC[iDiskImageC]; break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (iOffsetStart != 0x00) @@ -1421,6 +1652,7 @@ void SaveLevels (void) { case 1: iOffsetStart = ulSavedLevelA[iDiskImageA]; break; case 2: iOffsetStart = ulSavedLevelB[iDiskImageB]; break; + case 3: iOffsetStart = ulSavedLevelC[iDiskImageC]; break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (iOffsetStart != 0x00) @@ -1697,7 +1929,7 @@ void InitScreen (void) window = SDL_CreateWindow (EDITOR_NAME " " EDITOR_VERSION, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, - (SCREEN_WIDTH) * iScale, (SCREEN_HEIGHT) * iScale, iFullscreen); + (WINDOW_WIDTH) * iScale, (WINDOW_HEIGHT) * iScale, iFullscreen); if (window == NULL) { printf ("[FAILED] Unable to create a window: %s!\n", SDL_GetError()); @@ -1713,8 +1945,8 @@ void InitScreen (void) SDL_SetHint (SDL_HINT_RENDER_SCALE_QUALITY, "nearest"); if (iFullscreen != 0) { - SDL_RenderSetLogicalSize (ascreen, (SCREEN_WIDTH) * iScale, - (SCREEN_HEIGHT) * iScale); + SDL_RenderSetLogicalSize (ascreen, (WINDOW_WIDTH) * iScale, + (WINDOW_HEIGHT) * iScale); } if (TTF_Init() == -1) @@ -1815,6 +2047,9 @@ void InitScreen (void) PreLoad (PNG_VARIOUS, "BBC_Master_disabled.png", &imghcbdis); PreLoad (PNG_VARIOUS, "BBC_Master_off.png", &imghcboff); PreLoad (PNG_VARIOUS, "BBC_Master_on.png", &imghcbon); + PreLoad (PNG_VARIOUS, "C64_disabled.png", &imghccdis); + PreLoad (PNG_VARIOUS, "C64_off.png", &imghccoff); + PreLoad (PNG_VARIOUS, "C64_on.png", &imghccon); } else { PreLoad (PNG_GAMEPAD, "Apple_II_disabled.png", &imghcadis); PreLoad (PNG_GAMEPAD, "Apple_II_off.png", &imghcaoff); @@ -1822,6 +2057,9 @@ void InitScreen (void) PreLoad (PNG_GAMEPAD, "BBC_Master_disabled.png", &imghcbdis); PreLoad (PNG_GAMEPAD, "BBC_Master_off.png", &imghcboff); PreLoad (PNG_GAMEPAD, "BBC_Master_on.png", &imghcbon); + PreLoad (PNG_GAMEPAD, "C64_disabled.png", &imghccdis); + PreLoad (PNG_GAMEPAD, "C64_off.png", &imghccoff); + PreLoad (PNG_GAMEPAD, "C64_on.png", &imghccon); } HomeComputer(); PlaySound ("wav/ok_close.wav"); @@ -1831,6 +2069,7 @@ void InitScreen (void) { case 1: snprintf (sPathFile, MAX_PATHFILE, "%s", sPathFileA); break; case 2: snprintf (sPathFile, MAX_PATHFILE, "%s", sPathFileB); break; + case 3: snprintf (sPathFile, MAX_PATHFILE, "%s", sPathFileC); break; } LoadLevels (iStartLevel); @@ -1975,12 +2214,24 @@ void InitScreen (void) case 2: switch (iDiskImageB) { - case 0: /*** kieranhj (B0) ***/ + case 0: /*** kieranhj 1.0 (B0) ***/ PreLoad (PNG_VARIOUS, "B-em_B0.png", &imgemulator); break; + case 1: /*** kieranhj 1.1 (B1) ***/ + PreLoad (PNG_VARIOUS, "B-em_B1.png", &imgemulator); + break; } PreLoad (PNG_VARIOUS, "BBC_Master_lb.png", &imghcblb); break; + case 3: + switch (iDiskImageC) + { + case 0: /*** mrsid (C0) ***/ + PreLoad (PNG_VARIOUS, "VICE_C0.png", &imgemulator); + break; + } + PreLoad (PNG_VARIOUS, "C64_lb.png", &imghcclb); + break; } PreLoad (PNG_VARIOUS, "exe_tab.png", &imgexetab); PreLoad (PNG_VARIOUS, "exe_tab_small.png", &imgexetabs); @@ -1999,6 +2250,7 @@ void InitScreen (void) PreLoad (PNG_VARIOUS, "events.png", &imgevents); PreLoad (PNG_VARIOUS, "level_bar_a.png", &imgbara); PreLoad (PNG_VARIOUS, "level_bar_b.png", &imgbarb); + PreLoad (PNG_VARIOUS, "level_bar_c.png", &imgbarc); PreLoad (PNG_VARIOUS, "palace.png", &imgpalace); PreLoad (PNG_VARIOUS, "popup.png", &imgpopup); PreLoad (PNG_VARIOUS, "room_links.png", &imgrl); @@ -2010,6 +2262,7 @@ void InitScreen (void) PreLoad (PNG_GAMEPAD, "events.png", &imgevents); PreLoad (PNG_GAMEPAD, "level_bar_a.png", &imgbara); PreLoad (PNG_GAMEPAD, "level_bar_b.png", &imgbarb); + PreLoad (PNG_GAMEPAD, "level_bar_c.png", &imgbarc); PreLoad (PNG_GAMEPAD, "palace.png", &imgpalace); PreLoad (PNG_GAMEPAD, "popup.png", &imgpopup); PreLoad (PNG_GAMEPAD, "room_links.png", &imgrl); @@ -2229,7 +2482,7 @@ void InitScreen (void) Quit(); break; case 2: arBrokenRoomLinks[iCurLevel] = BrokenRoomLinks (0); - /*** no break ***/ + iScreen = 1; break; case 3: iScreen = 1; break; } @@ -2437,7 +2690,7 @@ void InitScreen (void) } ShowScreen(); break; - case SDL_KEYDOWN: /*** http://wiki.libsdl.org/SDL_Keycode ***/ + case SDL_KEYDOWN: /*** https://wiki.libsdl.org/SDL2/SDL_Keycode ***/ switch (event.key.keysym.sym) { case SDLK_F1: @@ -2507,7 +2760,7 @@ void InitScreen (void) Quit(); break; case 2: arBrokenRoomLinks[iCurLevel] = BrokenRoomLinks (0); - /*** no break ***/ + iScreen = 1; break; case 3: iScreen = 1; break; } @@ -3155,7 +3408,7 @@ void InitScreen (void) Quit(); break; case 2: arBrokenRoomLinks[iCurLevel] = BrokenRoomLinks (0); - /*** no break ***/ + iScreen = 1; break; case 3: iScreen = 1; break; } @@ -4378,6 +4631,7 @@ void ShowScreen (void) { case 1: ShowImage (imgbara, 25, 0, "imgbara"); break; case 2: ShowImage (imgbarb, 25, 0, "imgbarb"); break; + case 3: ShowImage (imgbarc, 25, 0, "imgbarc"); break; } /*** Assemble level bar text. ***/ @@ -4419,6 +4673,7 @@ void ShowScreen (void) { case 1: ShowImage (imghcalb, 32, 7, "imghcalb"); break; case 2: ShowImage (imghcblb, 32, 7, "imghcblb"); break; + case 3: ShowImage (imghcclb, 32, 7, "imghcclb"); break; } /*** Display level bar text. ***/ @@ -4599,7 +4854,7 @@ void Help (void) case SDL_MOUSEMOTION: iXPos = event.motion.x; iYPos = event.motion.y; - if (InArea (54, 346, 54 + 504, 346 + 23) == 1) + if (InArea (48, 322, 48 + 517, 322 + 20) == 1) { SDL_SetCursor (curHand); } else { @@ -4622,8 +4877,8 @@ void Help (void) { if (InArea (510, 411, 510 + 85, 411 + 32) == 1) /*** OK ***/ { iHelp = 0; } - if (InArea (54, 346, 54 + 504, 346 + 23) == 1) - { OpenURL ("http://www.norbertdejonge.nl/leapop/"); } + if (InArea (48, 322, 48 + 517, 322 + 20) == 1) + { OpenURL ("https://github.com/EndeavourAccuracy/leapop"); } } ShowHelp(); break; case SDL_WINDOWEVENT: @@ -4747,7 +5002,8 @@ void EXE (void) /*** Prince HP. ***/ if (((iHomeComputer == 1) && (ulPrinceHPA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulPrinceHPB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulPrinceHPB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulPrinceHPC[iDiskImageC] != 0x00))) { PlusMinus (&iEXEPrinceHP, 139, 58, 0, 255, -10, 0); PlusMinus (&iEXEPrinceHP, 154, 58, 0, 255, -1, 0); @@ -4757,7 +5013,8 @@ void EXE (void) /*** Shadow HP. ***/ if (((iHomeComputer == 1) && (ulShadowHPA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulShadowHPB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulShadowHPB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulShadowHPC[iDiskImageC] != 0x00))) { PlusMinus (&iEXEShadowHP, 139, 82, 0, 255, -10, 0); PlusMinus (&iEXEShadowHP, 154, 82, 0, 255, -1, 0); @@ -4769,7 +5026,9 @@ void EXE (void) if (((iHomeComputer == 1) && (ulChomperDelayA[iDiskImageA] != 0x00)) || ((iHomeComputer == 2) && - (ulChomperDelayB[iDiskImageB] != 0x00))) + (ulChomperDelayB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && + (ulChomperDelayC[iDiskImageC] != 0x00))) { PlusMinus (&iEXEChomperDelay, 139, 106, 3, 255, -10, 0); PlusMinus (&iEXEChomperDelay, 154, 106, 3, 255, -1, 0); @@ -4781,7 +5040,9 @@ void EXE (void) if (((iHomeComputer == 1) && (ulMouseDelayA[iDiskImageA] != 0x00)) || ((iHomeComputer == 2) && - (ulMouseDelayB[iDiskImageB] != 0x00))) + (ulMouseDelayB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && + (ulMouseDelayC[iDiskImageC] != 0x00))) { PlusMinus (&iEXEMouseDelay, 139, 130, 0, 255, -10, 0); PlusMinus (&iEXEMouseDelay, 154, 130, 0, 255, -1, 0); @@ -4821,7 +5082,9 @@ void EXE (void) if (((iHomeComputer == 1) && (ulGuardA[iDiskImageA][iEXETab - 1] != 0x00)) || ((iHomeComputer == 2) && - (ulGuardB[iDiskImageB][iEXETab - 1] != 0x00))) + (ulGuardB[iDiskImageB][iEXETab - 1] != 0x00)) || + ((iHomeComputer == 3) && + (ulGuardC[iDiskImageC][iEXETab - 1] != 0x00))) { for (iRow = 1; iRow <= 6; iRow++) { @@ -4911,7 +5174,9 @@ void EXE (void) if (((iHomeComputer == 1) && (ulGuardHPA[iDiskImageA] != 0x00)) || ((iHomeComputer == 2) && - (ulGuardHPB[iDiskImageB] != 0x00))) + (ulGuardHPB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && + (ulGuardHPC[iDiskImageC] != 0x00))) { PlusMinus (&iEXEGuardHP[iEXETabS], 139, 236, 0, 255, -10, 0); PlusMinus (&iEXEGuardHP[iEXETabS], 154, 236, 0, 255, -1, 0); @@ -4923,7 +5188,9 @@ void EXE (void) if (((iHomeComputer == 1) && (ulGuardUniformA[iDiskImageA] != 0x00)) || ((iHomeComputer == 2) && - (ulGuardUniformB[iDiskImageB] != 0x00))) + (ulGuardUniformB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && + (ulGuardUniformC[iDiskImageC] != 0x00))) { PlusMinus (&iEXEGuardU[iEXETabS], 139, 260, 0, 1, -10, 0); PlusMinus (&iEXEGuardU[iEXETabS], 154, 260, 0, 1, -1, 0); @@ -4935,7 +5202,9 @@ void EXE (void) if (((iHomeComputer == 1) && (ulGuardSpriteA[iDiskImageA] != 0x00)) || ((iHomeComputer == 2) && - (ulGuardSpriteB[iDiskImageB] != 0x00))) + (ulGuardSpriteB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && + (ulGuardSpriteC[iDiskImageC] != 0x00))) { if (iEXETabS > 2) /*** Levels 0, 1 and 2 must use 0x00. ***/ { @@ -4952,7 +5221,8 @@ void EXE (void) if (iEXETabS == 3) { iMin = 0; } else { iMin = 1; } if (((iHomeComputer == 1) && (ulEnv1A[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulEnv1C[iDiskImageC] != 0x00))) { PlusMinus (&iEXEEnv1[iEXETabS], 139, 308, iMin, 2, -10, 0); PlusMinus (&iEXEEnv1[iEXETabS], 154, 308, iMin, 2, -1, 0); @@ -4961,7 +5231,8 @@ void EXE (void) } if (((iHomeComputer == 1) && (ulEnv2A[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulEnv2B[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulEnv2B[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulEnv2C[iDiskImageC] != 0x00))) { PlusMinus (&iEXEEnv2[iEXETabS], 139, 332, iMin, 2, -10, 0); PlusMinus (&iEXEEnv2[iEXETabS], 154, 332, iMin, 2, -1, 0); @@ -5017,7 +5288,8 @@ void ShowEXE (void) /*** Prince HP. ***/ if (((iHomeComputer == 1) && (ulPrinceHPA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulPrinceHPB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulPrinceHPB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulPrinceHPC[iDiskImageC] != 0x00))) { if (iEXEPrinceHP == 0x03) { clr = color_bl; } else { clr = color_blue; } CenterNumber (iEXEPrinceHP, 167, 58, clr, 0); @@ -5025,7 +5297,8 @@ void ShowEXE (void) /*** Shadow HP. ***/ if (((iHomeComputer == 1) && (ulShadowHPA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulShadowHPB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulShadowHPB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulShadowHPC[iDiskImageC] != 0x00))) { if (iEXEShadowHP == 0x04) { clr = color_bl; } else { clr = color_blue; } CenterNumber (iEXEShadowHP, 167, 82, clr, 0); @@ -5033,7 +5306,8 @@ void ShowEXE (void) /*** Chomper delay. ***/ if (((iHomeComputer == 1) && (ulChomperDelayA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulChomperDelayB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulChomperDelayB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulChomperDelayC[iDiskImageC] != 0x00))) { if (iEXEChomperDelay == 0x10) { clr = color_bl; } else { clr = color_blue; } @@ -5042,7 +5316,8 @@ void ShowEXE (void) /*** Mouse delay. ***/ if (((iHomeComputer == 1) && (ulMouseDelayA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulMouseDelayB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulMouseDelayB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulMouseDelayC[iDiskImageC] != 0x00))) { if (iEXEMouseDelay == 0x96) { clr = color_bl; } else { clr = color_blue; } CenterNumber (iEXEMouseDelay, 167, 130, clr, 0); @@ -5090,7 +5365,8 @@ void ShowEXE (void) ShowImage (imgexetabs, iTabX, iTabY, "imgexetabs"); if (((iHomeComputer == 1) && (ulGuardA[iDiskImageA][iEXETab - 1] != 0x00)) || - ((iHomeComputer == 2) && (ulGuardB[iDiskImageB][iEXETab - 1] != 0x00))) + ((iHomeComputer == 2) && (ulGuardB[iDiskImageB][iEXETab - 1] != 0x00)) || + ((iHomeComputer == 3) && (ulGuardC[iDiskImageC][iEXETab - 1] != 0x00))) { /* Use black. * Override with blue if the setting does not match the default. @@ -5119,7 +5395,8 @@ void ShowEXE (void) /*** Guard HP. ***/ if (((iHomeComputer == 1) && (ulGuardHPA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulGuardHPB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulGuardHPB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulGuardHPC[iDiskImageC] != 0x00))) { if (iEXETabS != 14) { @@ -5132,7 +5409,8 @@ void ShowEXE (void) /*** Guard uniform. ***/ if (((iHomeComputer == 1) && (ulGuardUniformA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulGuardUniformB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulGuardUniformB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulGuardUniformC[iDiskImageC] != 0x00))) { if (iEXETabS != 14) { @@ -5145,7 +5423,8 @@ void ShowEXE (void) /*** Guard sprite. ***/ if (((iHomeComputer == 1) && (ulGuardSpriteA[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulGuardSpriteB[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulGuardSpriteB[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulGuardSpriteC[iDiskImageC] != 0x00))) { if (iEXETabS != 14) { @@ -5158,7 +5437,8 @@ void ShowEXE (void) /*** Env. 1 ***/ if (((iHomeComputer == 1) && (ulEnv1A[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulEnv1C[iDiskImageC] != 0x00))) { if (iEXETabS > 2) { clr = color_bl; } else { clr = color_gray; } if (iEXEEnv1[iEXETabS] != arDefaultEnv1[iEXETabS]) @@ -5168,7 +5448,8 @@ void ShowEXE (void) /*** Env. 2 ***/ if (((iHomeComputer == 1) && (ulEnv2A[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulEnv2B[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulEnv2B[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulEnv2C[iDiskImageC] != 0x00))) { if (iEXETabS > 2) { clr = color_bl; } else { clr = color_gray; } if (iEXEEnv2[iEXETabS] != arDefaultEnv2[iEXETabS]) @@ -5180,7 +5461,9 @@ void ShowEXE (void) if (((iHomeComputer == 1) && (ulEnv1A[iDiskImageA] != 0x00) && (ulEnv2A[iDiskImageA] != 0x00)) || ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00) && - (ulEnv2B[iDiskImageB] != 0x00))) + (ulEnv2B[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulEnv1C[iDiskImageC] != 0x00) && + (ulEnv2C[iDiskImageC] != 0x00))) { if (iEXEEnv1[iEXETabS] == iEXEEnv2[iEXETabS]) { @@ -5492,7 +5775,8 @@ void InitScreenAction (char *sAction) if (strcmp (sAction, "env") == 0) { if (((iHomeComputer == 1) && (ulEnv1A[iDiskImageA] != 0x00)) || - ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00))) + ((iHomeComputer == 2) && (ulEnv1B[iDiskImageB] != 0x00)) || + ((iHomeComputer == 3) && (ulEnv1C[iDiskImageC] != 0x00))) { if ((iCurLevel >= 3) && (iCurLevel <= 14)) { @@ -5552,19 +5836,26 @@ int StartGame (void *unused) PlaySound ("wav/emulator.wav"); - if (iHomeComputer == 1) + switch (iHomeComputer) { + case 1: /*** AppleWin ***/ #if defined WIN32 || _WIN32 || WIN64 || _WIN64 snprintf (sWine, 200, "%s", ""); #else snprintf (sWine, 200, "%s", "wine "); #endif - snprintf (sSystem, 200, "%sAppleWin%sAppleWin.exe > %s", - sWine, SLASH, DEVNULL); - } else { - snprintf (sSystem, 200, "b-em -m10 -fasttape %s > %s", - sPathFile, DEVNULL); + snprintf (sSystem, 200, "%sAppleWin%sAppleWin.exe -model %s -h1 %s > %s", + sWine, SLASH, "apple2ee", sPathFile, DEVNULL); + break; + case 2: /*** B-em ***/ + snprintf (sSystem, 200, "b-em -m10 -fasttape %s > %s", + sPathFile, DEVNULL); + break; + case 3: /*** VICE ***/ + snprintf (sSystem, 200, "x64sc %s > %s", + sPathFile, DEVNULL); + break; } if (system (sSystem) == -1) { printf ("[ WARN ] Could not execute emulator!\n"); } @@ -5706,10 +5997,10 @@ void Zoom (int iToggleFull) } SDL_SetWindowFullscreen (window, iFullscreen); - SDL_SetWindowSize (window, (SCREEN_WIDTH) * iScale, - (SCREEN_HEIGHT) * iScale); - SDL_RenderSetLogicalSize (ascreen, (SCREEN_WIDTH) * iScale, - (SCREEN_HEIGHT) * iScale); + SDL_SetWindowSize (window, (WINDOW_WIDTH) * iScale, + (WINDOW_HEIGHT) * iScale); + SDL_RenderSetLogicalSize (ascreen, (WINDOW_WIDTH) * iScale, + (WINDOW_HEIGHT) * iScale); SDL_SetWindowPosition (window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); TTF_CloseFont (font1); @@ -7012,6 +7303,7 @@ void CreateBAK (void) { case 1: fBAK = fopen (BACKUP_A, "wb"); break; case 2: fBAK = fopen (BACKUP_B, "wb"); break; + case 3: fBAK = fopen (BACKUP_C, "wb"); break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (fBAK == NULL) @@ -7714,7 +8006,11 @@ void CenterNumber (int iNumber, int iX, int iY, } else { snprintf (sText, MAX_TEXT, "%02x", iNumber); } - message = TTF_RenderText_Blended_Wrapped (font3, sText, fore, 0); + /* The 100000 is a workaround for 0 being broken. SDL devs have fixed that + * see e.g. https://hg.libsdl.org/SDL_ttf/rev/72b8861dbc01 but + * Ubuntu et al. still ship an sdl-ttf that is >10 years(!) old. + */ + message = TTF_RenderText_Blended_Wrapped (font3, sText, fore, 100000); messaget = SDL_CreateTextureFromSurface (ascreen, message); if (iHex == 0) { @@ -7777,6 +8073,7 @@ void EXELoad (void) { case 1: iHCSwitch = 1; break; case 2: iHCSwitch = 2; break; + case 3: iHCSwitch = 3; break; default: printf ("[FAILED] Strange iHomeComputer: %i!\n", iHomeComputer); exit (EXIT_ERROR); break; @@ -7795,6 +8092,7 @@ void EXELoad (void) { case 1: ulOffset = ulPrinceHPA[iDiskImageA]; break; case 2: ulOffset = ulPrinceHPB[iDiskImageB]; break; + case 3: ulOffset = ulPrinceHPC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7808,6 +8106,7 @@ void EXELoad (void) { case 1: ulOffset = ulShadowHPA[iDiskImageA]; break; case 2: ulOffset = ulShadowHPB[iDiskImageB]; break; + case 3: ulOffset = ulShadowHPC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7821,6 +8120,7 @@ void EXELoad (void) { case 1: ulOffset = ulChomperDelayA[iDiskImageA]; break; case 2: ulOffset = ulChomperDelayB[iDiskImageB]; break; + case 3: ulOffset = ulChomperDelayC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7834,6 +8134,7 @@ void EXELoad (void) { case 1: ulOffset = ulMouseDelayA[iDiskImageA]; break; case 2: ulOffset = ulMouseDelayB[iDiskImageB]; break; + case 3: ulOffset = ulMouseDelayC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7849,6 +8150,7 @@ void EXELoad (void) { case 1: ulOffset = ulGuardA[iDiskImageA][iTab - 1]; break; case 2: ulOffset = ulGuardB[iDiskImageB][iTab - 1]; break; + case 3: ulOffset = ulGuardC[iDiskImageC][iTab - 1]; break; } if (ulOffset != 0x00) { @@ -7866,6 +8168,7 @@ void EXELoad (void) { case 1: ulOffset = ulGuardHPA[iDiskImageA]; break; case 2: ulOffset = ulGuardHPB[iDiskImageB]; break; + case 3: ulOffset = ulGuardHPC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7885,6 +8188,7 @@ void EXELoad (void) { case 1: ulOffset = ulGuardUniformA[iDiskImageA]; break; case 2: ulOffset = ulGuardUniformB[iDiskImageB]; break; + case 3: ulOffset = ulGuardUniformC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7904,6 +8208,7 @@ void EXELoad (void) { case 1: ulOffset = ulGuardSpriteA[iDiskImageA]; break; case 2: ulOffset = ulGuardSpriteB[iDiskImageB]; break; + case 3: ulOffset = ulGuardSpriteC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7931,6 +8236,7 @@ void EXELoad (void) { case 1: ulOffset = ulEnv1A[iDiskImageA]; break; case 2: ulOffset = ulEnv1B[iDiskImageB]; break; + case 3: ulOffset = ulEnv1C[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7952,6 +8258,7 @@ void EXELoad (void) { case 1: ulOffset = ulEnv2A[iDiskImageA]; break; case 2: ulOffset = ulEnv2B[iDiskImageB]; break; + case 3: ulOffset = ulEnv2C[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -7987,6 +8294,7 @@ void EXESave (void) { case 1: iHCSwitch = 1; break; case 2: iHCSwitch = 2; break; + case 3: iHCSwitch = 3; break; default: printf ("[FAILED] Strange iHomeComputer: %i!\n", iHomeComputer); exit (EXIT_ERROR); break; @@ -8005,6 +8313,7 @@ void EXESave (void) { case 1: ulOffset = ulPrinceHPA[iDiskImageA]; break; case 2: ulOffset = ulPrinceHPB[iDiskImageB]; break; + case 3: ulOffset = ulPrinceHPC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8018,6 +8327,7 @@ void EXESave (void) { case 1: ulOffset = ulShadowHPA[iDiskImageA]; break; case 2: ulOffset = ulShadowHPB[iDiskImageB]; break; + case 3: ulOffset = ulShadowHPC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8031,6 +8341,7 @@ void EXESave (void) { case 1: ulOffset = ulChomperDelayA[iDiskImageA]; break; case 2: ulOffset = ulChomperDelayB[iDiskImageB]; break; + case 3: ulOffset = ulChomperDelayC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8044,6 +8355,7 @@ void EXESave (void) { case 1: ulOffset = ulMouseDelayA[iDiskImageA]; break; case 2: ulOffset = ulMouseDelayB[iDiskImageB]; break; + case 3: ulOffset = ulMouseDelayC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8059,6 +8371,7 @@ void EXESave (void) { case 1: ulOffset = ulGuardA[iDiskImageA][iTab - 1]; break; case 2: ulOffset = ulGuardB[iDiskImageB][iTab - 1]; break; + case 3: ulOffset = ulGuardC[iDiskImageC][iTab - 1]; break; } if (ulOffset != 0x00) { @@ -8076,6 +8389,7 @@ void EXESave (void) { case 1: ulOffset = ulGuardHPA[iDiskImageA]; break; case 2: ulOffset = ulGuardHPB[iDiskImageB]; break; + case 3: ulOffset = ulGuardHPC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8095,6 +8409,7 @@ void EXESave (void) { case 1: ulOffset = ulGuardUniformA[iDiskImageA]; break; case 2: ulOffset = ulGuardUniformB[iDiskImageB]; break; + case 3: ulOffset = ulGuardUniformC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8114,6 +8429,7 @@ void EXESave (void) { case 1: ulOffset = ulGuardSpriteA[iDiskImageA]; break; case 2: ulOffset = ulGuardSpriteB[iDiskImageB]; break; + case 3: ulOffset = ulGuardSpriteC[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8137,6 +8453,7 @@ void EXESave (void) { case 1: ulOffset = ulEnv1A[iDiskImageA]; break; case 2: ulOffset = ulEnv1B[iDiskImageB]; break; + case 3: ulOffset = ulEnv1C[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8153,6 +8470,7 @@ void EXESave (void) { case 1: ulOffset = ulEnv2A[iDiskImageA]; break; case 2: ulOffset = ulEnv2B[iDiskImageB]; break; + case 3: ulOffset = ulEnv2C[iDiskImageC]; break; } if (ulOffset != 0x00) { @@ -8644,6 +8962,15 @@ void HomeComputerAction (char *sAction) iHomeComputerActive = 0; } } + + if (strcmp (sAction, "three") == 0) + { + if (iC64 == 1) + { + iHomeComputer = 3; + iHomeComputerActive = 0; + } + } } /*****************************************************************************/ void HomeComputer (void) @@ -8673,14 +9000,19 @@ void HomeComputer (void) { HomeComputerAction ("one"); } if ((iBBCMaster == 1) && (iOnBBCMaster == 1)) { HomeComputerAction ("two"); } + if ((iC64 == 1) && (iOnC64 == 1)) + { HomeComputerAction ("three"); } break; case SDL_CONTROLLER_BUTTON_B: case SDL_CONTROLLER_BUTTON_BACK: Quit(); break; case SDL_CONTROLLER_BUTTON_LEFTSHOULDER: case SDL_CONTROLLER_BUTTON_DPAD_LEFT: - if ((iOnBBCMaster == 1) && (iAppleII == 1)) + if ((iOnC64 == 1) && (iBBCMaster == 1)) { + iOnBBCMaster = 1; iOnC64 = 0; + ShowHomeComputer(); + } else if ((iOnBBCMaster == 1) && (iAppleII == 1)) { iOnAppleII = 1; iOnBBCMaster = 0; ShowHomeComputer(); } @@ -8691,6 +9023,9 @@ void HomeComputer (void) { iOnAppleII = 0; iOnBBCMaster = 1; ShowHomeComputer(); + } else if ((iOnBBCMaster == 1) && (iC64 == 1)) { + iOnBBCMaster = 0; iOnC64 = 1; + ShowHomeComputer(); } break; case SDL_CONTROLLER_BUTTON_X: @@ -8699,6 +9034,9 @@ void HomeComputer (void) case SDL_CONTROLLER_BUTTON_Y: HomeComputerAction ("two"); break; + case SDL_CONTROLLER_BUTTON_GUIDE: + HomeComputerAction ("three"); + break; } ShowHomeComputer(); break; @@ -8708,8 +9046,11 @@ void HomeComputer (void) if ((event.caxis.axis == SDL_CONTROLLER_AXIS_TRIGGERLEFT) || (iXJoy1 < -30000) || (iXJoy2 < -30000)) /*** left ***/ { - if ((iOnBBCMaster == 1) && (iAppleII == 1)) + if ((iOnC64 == 1) && (iBBCMaster == 1)) { + iOnBBCMaster = 1; iOnC64 = 0; + ShowHomeComputer(); + } else if ((iOnBBCMaster == 1) && (iAppleII == 1)) { iOnAppleII = 1; iOnBBCMaster = 0; ShowHomeComputer(); } @@ -8721,6 +9062,9 @@ void HomeComputer (void) { iOnAppleII = 0; iOnBBCMaster = 1; ShowHomeComputer(); + } else if ((iOnBBCMaster == 1) && (iC64 == 1)) { + iOnBBCMaster = 0; iOnC64 = 1; + ShowHomeComputer(); } } break; @@ -8736,6 +9080,8 @@ void HomeComputer (void) { HomeComputerAction ("one"); } if ((iBBCMaster == 1) && (iOnBBCMaster == 1)) { HomeComputerAction ("two"); } + if ((iC64 == 1) && (iOnC64 == 1)) + { HomeComputerAction ("three"); } break; case SDLK_1: /*** Apple II ***/ HomeComputerAction ("one"); @@ -8743,9 +9089,15 @@ void HomeComputer (void) case SDLK_2: /*** BBC Master ***/ HomeComputerAction ("two"); break; + case SDLK_3: /*** C64 ***/ + HomeComputerAction ("three"); + break; case SDLK_LEFT: - if ((iOnBBCMaster == 1) && (iAppleII == 1)) + if ((iOnC64 == 1) && (iBBCMaster == 1)) { + iOnBBCMaster = 1; iOnC64 = 0; + ShowHomeComputer(); + } else if ((iOnBBCMaster == 1) && (iAppleII == 1)) { iOnAppleII = 1; iOnBBCMaster = 0; ShowHomeComputer(); } @@ -8755,6 +9107,9 @@ void HomeComputer (void) { iOnAppleII = 0; iOnBBCMaster = 1; ShowHomeComputer(); + } else if ((iOnBBCMaster == 1) && (iC64 == 1)) { + iOnBBCMaster = 0; iOnC64 = 1; + ShowHomeComputer(); } break; default: break; @@ -8768,15 +9123,18 @@ void HomeComputer (void) iYPos = event.motion.y; if ((iOldXPos == iXPos) && (iOldYPos == iYPos)) { break; } - if (InArea (88, 22, 88 + 176, 22 + 417) == 1) /*** Apple II ***/ + if (InArea (22, 22, 22 + 176, 22 + 417) == 1) /*** Apple II ***/ { if ((iAppleII == 1) && (iOnAppleII != 1)) - { iOnAppleII = 1; iOnBBCMaster = 0; } - } else if (InArea (348, 22, 348 + 176, 22 + 417) == 1) { /*** BM ***/ + { iOnAppleII = 1; iOnBBCMaster = 0; iOnC64 = 0; } + } else if (InArea (218, 22, 218 + 176, 22 + 417) == 1) { /*** BM ***/ if ((iBBCMaster == 1) && (iOnBBCMaster != 1)) - { iOnAppleII = 0; iOnBBCMaster = 1; } + { iOnAppleII = 0; iOnBBCMaster = 1; iOnC64 = 0; } + } else if (InArea (414, 22, 414 + 176, 22 + 417) == 1) { /*** C ***/ + if ((iC64 == 1) && (iOnC64 != 1)) + { iOnAppleII = 0; iOnBBCMaster = 0; iOnC64 = 1; } } else { - iOnAppleII = 0; iOnBBCMaster = 0; + iOnAppleII = 0; iOnBBCMaster = 0; iOnC64 = 0; } ShowHomeComputer(); break; @@ -8788,14 +9146,18 @@ void HomeComputer (void) iOnBBCMaster = 0; if (event.button.button == 1) { - if (InArea (88, 22, 88 + 176, 22 + 417) == 1) + if (InArea (22, 22, 22 + 176, 22 + 417) == 1) { /*** Apple II ***/ HomeComputerAction ("one"); } - if (InArea (348, 22, 348 + 176, 22 + 417) == 1) + if (InArea (218, 22, 218 + 176, 22 + 417) == 1) { /*** BBC Master ***/ HomeComputerAction ("two"); } + if (InArea (414, 22, 414 + 176, 22 + 417) == 1) + { /*** C64 ***/ + HomeComputerAction ("three"); + } } ShowHomeComputer(); break; case SDL_WINDOWEVENT: @@ -8826,26 +9188,39 @@ void ShowHomeComputer (void) if (iAppleII == 0) { /*** disabled ***/ - ShowImage (imghcadis, 88, 22, "imghcadis"); + ShowImage (imghcadis, 22, 22, "imghcadis"); } else if (iOnAppleII == 0) { /*** off ***/ - ShowImage (imghcaoff, 88, 22, "imghcaoff"); + ShowImage (imghcaoff, 22, 22, "imghcaoff"); } else { /*** on ***/ - ShowImage (imghcaon, 88, 22, "imghcaon"); + ShowImage (imghcaon, 22, 22, "imghcaon"); } /*** BBC Master ***/ if (iBBCMaster == 0) { /*** disabled ***/ - ShowImage (imghcbdis, 348, 22, "imghcbdis"); + ShowImage (imghcbdis, 218, 22, "imghcbdis"); } else if (iOnBBCMaster == 0) { /*** off ***/ - ShowImage (imghcboff, 348, 22, "imghcboff"); + ShowImage (imghcboff, 218, 22, "imghcboff"); + } else { + /*** on ***/ + ShowImage (imghcbon, 218, 22, "imghcbon"); + } + + /*** C64 ***/ + if (iC64 == 0) + { + /*** disabled ***/ + ShowImage (imghccdis, 414, 22, "imghccdis"); + } else if (iOnC64 == 0) { + /*** off ***/ + ShowImage (imghccoff, 414, 22, "imghccoff"); } else { /*** on ***/ - ShowImage (imghcbon, 348, 22, "imghcbon"); + ShowImage (imghccon, 414, 22, "imghccon"); } /*** refresh screen ***/ @@ -8873,6 +9248,7 @@ void PlaytestStart (int iLevel) { case 1: iOffsetStart = ulSkipIntroA[iDiskImageA]; break; case 2: iOffsetStart = ulSkipIntroB[iDiskImageB]; break; + case 3: iOffsetStart = ulSkipIntroC[iDiskImageC]; break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (iOffsetStart != 0x00) @@ -8887,6 +9263,7 @@ void PlaytestStart (int iLevel) { case 1: iOffsetStart = ulStartLevelA[iDiskImageA]; break; case 2: iOffsetStart = ulStartLevelB[iDiskImageB]; break; + case 3: iOffsetStart = ulStartLevelC[iDiskImageC]; break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (iOffsetStart != 0x00) @@ -8922,6 +9299,7 @@ void PlaytestStop (void) { case 1: iOffsetStart = ulSkipIntroA[iDiskImageA]; break; case 2: iOffsetStart = ulSkipIntroB[iDiskImageB]; break; + case 3: iOffsetStart = ulSkipIntroC[iDiskImageC]; break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (iOffsetStart != 0x00) @@ -8936,6 +9314,7 @@ void PlaytestStop (void) { case 1: iOffsetStart = ulStartLevelA[iDiskImageA]; break; case 2: iOffsetStart = ulStartLevelB[iDiskImageB]; break; + case 3: iOffsetStart = ulStartLevelC[iDiskImageC]; break; default: printf ("[FAILED] iHomeComputer!\n"); exit (EXIT_ERROR); break; } if (iOffsetStart != 0x00) diff --git a/png/gamepad/C64_disabled.png b/png/gamepad/C64_disabled.png new file mode 100644 index 0000000..4ad389f Binary files /dev/null and b/png/gamepad/C64_disabled.png differ diff --git a/png/gamepad/C64_off.png b/png/gamepad/C64_off.png new file mode 100644 index 0000000..1cf0326 Binary files /dev/null and b/png/gamepad/C64_off.png differ diff --git a/png/gamepad/C64_on.png b/png/gamepad/C64_on.png new file mode 100644 index 0000000..ffa7d3e Binary files /dev/null and b/png/gamepad/C64_on.png differ diff --git a/png/gamepad/level_bar_c.png b/png/gamepad/level_bar_c.png new file mode 100644 index 0000000..81366ac Binary files /dev/null and b/png/gamepad/level_bar_c.png differ diff --git a/png/various/Apple_II_disabled.png b/png/various/Apple_II_disabled.png index fe4af97..47ce98c 100644 Binary files a/png/various/Apple_II_disabled.png and b/png/various/Apple_II_disabled.png differ diff --git a/png/various/Apple_II_off.png b/png/various/Apple_II_off.png index 61109d1..793a7e6 100644 Binary files a/png/various/Apple_II_off.png and b/png/various/Apple_II_off.png differ diff --git a/png/various/Apple_II_on.png b/png/various/Apple_II_on.png index b3511dc..76c9a37 100644 Binary files a/png/various/Apple_II_on.png and b/png/various/Apple_II_on.png differ diff --git a/png/various/B-em_B1.png b/png/various/B-em_B1.png new file mode 100644 index 0000000..6a088ae Binary files /dev/null and b/png/various/B-em_B1.png differ diff --git a/png/various/C64_disabled.png b/png/various/C64_disabled.png new file mode 100644 index 0000000..1997db7 Binary files /dev/null and b/png/various/C64_disabled.png differ diff --git a/png/various/C64_lb.png b/png/various/C64_lb.png new file mode 100644 index 0000000..0fa2ecd Binary files /dev/null and b/png/various/C64_lb.png differ diff --git a/png/various/C64_off.png b/png/various/C64_off.png new file mode 100644 index 0000000..4be87ee Binary files /dev/null and b/png/various/C64_off.png differ diff --git a/png/various/C64_on.png b/png/various/C64_on.png new file mode 100644 index 0000000..7dce72d Binary files /dev/null and b/png/various/C64_on.png differ diff --git a/png/various/VICE_C0.png b/png/various/VICE_C0.png new file mode 100644 index 0000000..0bfe9b8 Binary files /dev/null and b/png/various/VICE_C0.png differ diff --git a/png/various/events.png b/png/various/events.png index d7cdeb4..af46675 100644 Binary files a/png/various/events.png and b/png/various/events.png differ diff --git a/png/various/help.png b/png/various/help.png index 3549869..04846f8 100644 Binary files a/png/various/help.png and b/png/various/help.png differ diff --git a/png/various/level_bar_c.png b/png/various/level_bar_c.png new file mode 100644 index 0000000..6bce29d Binary files /dev/null and b/png/various/level_bar_c.png differ diff --git a/x64sc.bat b/x64sc.bat new file mode 100644 index 0000000..369fb3d --- /dev/null +++ b/x64sc.bat @@ -0,0 +1 @@ +VICE\x64sc.exe %1 %2 %3 %4 %5