CINT adjustments for 'Operacja Proboszcz' game
This commit is contained in:
1 parent
2009702011
commit
0f80941eac
7 files changed
+53
-36
No files matched your search
@@ -137,7 +137,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on
|
|||||||
| `$FFDB` | | `SETTIM` | DONE | |
|
| `$FFDB` | | `SETTIM` | DONE | |
|
||||||
| `$FFDE` | | `RDTIM` | DONE | |
|
| `$FFDE` | | `RDTIM` | DONE | |
|
||||||
| `$FFE1` | `$F6ED` | `STOP` | DONE | |
|
| `$FFE1` | `$F6ED` | `STOP` | DONE | |
|
||||||
| `$FFE4` | `$F13E` | `GETIN` | PARTIAL | only keyaboard supported |
|
| `$FFE4` | `$F13E` | `GETIN` | PARTIAL | only keyboard supported |
|
||||||
| `$FFE7` | `$F32F` | `CLALL` | DONE | |
|
| `$FFE7` | `$F32F` | `CLALL` | DONE | |
|
||||||
| `$FFEA` | | `UDTIM` | DONE | |
|
| `$FFEA` | | `UDTIM` | DONE | |
|
||||||
| `$FFED` | | `SCREEN` | DONE | |
|
| `$FFED` | | `SCREEN` | DONE | |
|
||||||
@@ -155,26 +155,27 @@ Not all of them - only these we want to have implemented.
|
|||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
| Address | Name | Status | Remarks |
|
| Address | Name | Status | Remarks |
|
||||||
| :-------: | :------------------ | :------: | :------------------------------------------------: |
|
| :-------: | :--------------------------- | :------: | :------------------------------------------------: |
|
||||||
| `$E544` | clear screen | DONE | |
|
| `$E51B` | init screen keyboard, no VIC | PARTIAL | not sure if correct |
|
||||||
| `$E50C` | set cursor position | PARTIAL | |
|
| `$E544` | clear screen | DONE | |
|
||||||
| `$E566` | home cursor | NOT DONE | |
|
| `$E50C` | set cursor position | PARTIAL | |
|
||||||
| `$E5A0` | setup VIC II & IO | DONE | |
|
| `$E566` | home cursor | NOT DONE | |
|
||||||
| `$E6B6` | advance cursor | NOT DONE | |
|
| `$E5A0` | setup VIC II & IO | DONE | |
|
||||||
| `$E701` | previous line | NOT DONE | |
|
| `$E6B6` | advance cursor | NOT DONE | |
|
||||||
| `$E8EA` | scroll line | NOT DONE | |
|
| `$E701` | previous line | NOT DONE | |
|
||||||
| `$E9FF` | clear line | NOT DONE | |
|
| `$E8EA` | scroll line | NOT DONE | |
|
||||||
| `$EA31` | default IRQ | PARTIAL | |
|
| `$E9FF` | clear line | NOT DONE | |
|
||||||
| `$EA7E` | ack CIA1 + below | DONE | |
|
| `$EA31` | default IRQ | PARTIAL | |
|
||||||
| `$EA81` | ret from IRQ/NMI | DONE | |
|
| `$EA7E` | ack CIA1 + below | DONE | |
|
||||||
| `$F142` | get key from buffer | DONE | |
|
| `$EA81` | ret from IRQ/NMI | DONE | |
|
||||||
| `$FD30` | default vectors | DONE | |
|
| `$F142` | get key from buffer | DONE | |
|
||||||
| `$FD90` | (unknown) | NOT DONE | |
|
| `$FD30` | default vectors | DONE | |
|
||||||
| `$FD90` | (unknown) | NOT DONE | |
|
| `$FD90` | (unknown) | NOT DONE | |
|
||||||
| `$FE2D` | memtop set part | DONE | |
|
| `$FD90` | (unknown) | NOT DONE | |
|
||||||
| `$FE47` | default NMI | PARTIAL | |
|
| `$FE2D` | memtop set part | DONE | |
|
||||||
| `$FE66` | default BRK | DONE | |
|
| `$FE47` | default NMI | PARTIAL | |
|
||||||
| `$FF80` | revision byte | DONE | |
|
| `$FE66` | default BRK | DONE | |
|
||||||
|
| `$FF80` | revision byte | DONE | |
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Official Kernal routine, described in:
|
// It seems this is a part CINT which initializes screen and keyboard, but does not
|
||||||
|
// reset VIC-II. See here: https://csdb.dk/forums/index.php?roomid=11&topicid=17048&firstpost=22
|
||||||
//
|
//
|
||||||
|
// For more details see:
|
||||||
// - [RG64] C64 Programmer's Reference Guide - page 280
|
// - [RG64] C64 Programmer's Reference Guide - page 280
|
||||||
// - [CM64] Compute's Mapping the Commodore 64 - page 242
|
// - [CM64] Compute's Mapping the Commodore 64 - page 242
|
||||||
//
|
|
||||||
// CPU registers that has to be preserved (see [RG64]): none
|
|
||||||
//
|
|
||||||
|
|
||||||
|
cint_screen_keyboard_real:
|
||||||
|
|
||||||
cint_real:
|
// XXX check what really is performed here
|
||||||
|
|
||||||
// According to [CM64], this routine checks for PAL/NTSC. It's definitely not done
|
// According to [CM64], this routine checks for PAL/NTSC. It's definitely not done
|
||||||
// within the 'BRK' part, this can be easily checked - POKE something
|
// within the 'BRK' part, this can be easily checked - POKE something
|
||||||
@@ -116,9 +116,6 @@ cint_brk: // entry for BRK and STOP+RESTORE - XXX, where should it start?
|
|||||||
ldx #$00
|
ldx #$00
|
||||||
stx MODE
|
stx MODE
|
||||||
|
|
||||||
// Setup video and I/O
|
|
||||||
jsr setup_vicii
|
|
||||||
|
|
||||||
// Fallthrough/jump to screen clear routine (Compute's Mapping the 64 p215)
|
// Fallthrough/jump to screen clear routine (Compute's Mapping the 64 p215)
|
||||||
|
|
||||||
jmp clear_screen
|
jmp clear_screen
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
// Routine too long to fit here
|
||||||
|
|
||||||
|
cint_screen_keyboard:
|
||||||
|
|
||||||
|
jmp cint_screen_keyboard_real
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
Game 'Operacja Proboszcz' explicitly calls this location.
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
// Our implementation is longer than the original one,
|
|
||||||
// placing it here would cause a collision with OPEN
|
|
||||||
|
|
||||||
CINT:
|
|
||||||
jmp cint_real
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Official Kernal routine, described in:
|
||||||
|
//
|
||||||
|
// - [RG64] C64 Programmer's Reference Guide - page 280
|
||||||
|
// - [CM64] Compute's Mapping the Commodore 64 - page 242
|
||||||
|
//
|
||||||
|
// CPU registers that has to be preserved (see [RG64]): none
|
||||||
|
//
|
||||||
|
|
||||||
|
CINT:
|
||||||
|
|
||||||
|
// Setup video and I/O
|
||||||
|
jsr setup_vicii
|
||||||
|
|
||||||
|
jmp cint_screen_keyboard
|
||||||
@@ -12,6 +12,7 @@ default_brk_handler:
|
|||||||
|
|
||||||
jsr JRESTOR
|
jsr JRESTOR
|
||||||
jsr JIOINIT
|
jsr JIOINIT
|
||||||
|
jsr setup_vicii // XXX should probably be a part of cint_brk
|
||||||
jsr cint_brk
|
jsr cint_brk
|
||||||
|
|
||||||
cli
|
cli
|
||||||
|
|||||||
Reference in new issue
Block a user