Parameters: Difference between revisions
Count Zero (talk | contribs) m (→Usage) |
Count Zero (talk | contribs) m (→Tech) |
||
Line 52: | Line 52: | ||
=== Tech === | === Tech === | ||
<pre> | |||
;--------------------------------------- | |||
; PARAMETER | |||
;--------------------------------------- | |||
PARAM JSR PRINT | |||
.TEXT "PARAMETER CODE : " | |||
.BYTE $00 | |||
JSR GFN1 ; GET FILENAME | |||
BEQ SPRUNG3 | |||
JSR CHKPC | |||
LDY #$03 | |||
PARA1 LDA ($BB),Y ;FILENAME | |||
CMP PARFIL,Y | |||
BNE PARA2 | |||
DEY | |||
BPL PARA1 | |||
JSR PARA10 | |||
JMP PARA7 | |||
;--------------------------------------- | |||
PARFIL .TEXT "NOVA" | |||
;--------------------------------------- | |||
PARA2 LDA #$08 | |||
STA $BA | |||
JSR FOPEN | |||
BCC PARA4 | |||
CMP #$05 | |||
BEQ PARA3 | |||
PARA3 JMP SPI2 | |||
;--------------------------------------- | |||
PARA4 LDA $AE | |||
CMP #$BB | |||
BNE PARA5 | |||
CMP $AF | |||
BEQ PARA9 | |||
PARA5 CLV | |||
PARA6 PHP | |||
JSR $FFAB | |||
JSR $F642 | |||
PLP | |||
BVS PARA7 | |||
JSR PRINT | |||
.BYTE $0D | |||
.TEXT "FILETYP FALSCH" | |||
.BYTE $00 | |||
JMP PARA8 | |||
;--------------------------------------- | |||
PARA7 CLI | |||
JSR PRINT | |||
.BYTE $0D,$4F,$4B,$00 ;OK | |||
PARA8 JSR TSTBIT ;TASTE | |||
SPRUNG3 JMP ($0334) | |||
;--------------------------------------- | |||
PARA9 LDX #$FB | |||
TXS | |||
BIT $90 | |||
BVS PARA6 | |||
JSR $FFA5 | |||
TAY | |||
JSR $FFA5 | |||
STA $BB | |||
STY $8D | |||
TYA | |||
ASL A | |||
TAY | |||
LDA PARTB+1,Y | |||
PHA | |||
LDA PARTB,Y | |||
PHA | |||
LDY #$00 | |||
RTS | |||
;--------------------------------------- | |||
PRU1 JSR PRU3 | |||
STA $8E | |||
PRU2 JSR PRU3 | |||
STA $8F | |||
PRU3 LDA $BB | |||
PHA | |||
JSR $FFA5 | |||
STA $BB | |||
PRU4 BIT $90 | |||
BVS PARA9 | |||
PLA | |||
CMP #$BB | |||
BNE PRU5 | |||
CMP $BB | |||
BEQ PARA9 | |||
PRU5 CLC | |||
RTS | |||
;--------------------------------------- | |||
PRR1 LDA #$40 | |||
STA $90 | |||
BNE PRU4 | |||
;--------------------------------------- | |||
PARTB .WORD PRR1-1 | |||
.WORD PRR2-1 | |||
.WORD PRR3-1 | |||
.WORD PRR4-1 | |||
.WORD PRR5-1 | |||
.WORD PRR6-1 | |||
.WORD PRR6-1 | |||
.WORD PRR7-1 | |||
;--------------------------------------- | |||
PRR2 JSR PRU1 | |||
JSR RCR | |||
JMP PRR2 | |||
;--------------------------------------- | |||
PRR3 JSR PRU1 | |||
BCC PRR3B | |||
PRR3A JSR PRU3 | |||
PRR3B JSR RCR | |||
INC $8E | |||
BNE PRR3A | |||
INC $8F | |||
BNE PRR3A | |||
PRR4 JSR PRU2 | |||
STA $08E0 | |||
LDA $8F | |||
STA $08E1 | |||
JMP PRR4 | |||
;--------------------------------------- | |||
PRR5 JSR PRU2 | |||
STA $08EF | |||
LDA $8F | |||
STA $08EE | |||
JMP PRR5 | |||
;--------------------------------------- | |||
PRR6 JSR PRU1 | |||
STA ($8E),Y | |||
LDA $8E | |||
STA $7A | |||
LDA $8F | |||
STA $7B | |||
PRR6A JSR $FFA5 | |||
INC $8E | |||
BNE PRR6B | |||
INC $8F | |||
PRR6B STA ($8E),Y | |||
BIT $90 | |||
BVC PRR6A | |||
JSR $FFAB | |||
JSR $F642 | |||
LDA $8D | |||
CMP #$06 | |||
BEQ PRR6C | |||
JMP ($8E) | |||
PRR6C JMP ($7A) | |||
;--------------------------------------- | |||
PRR7 JSR PRU3 | |||
JSR $FFD2 | |||
JMP PRR7 | |||
;--------------------------------------- | |||
CHKPC LDY #$01 | |||
LDA ($BB),Y | |||
CMP #$2E | |||
BNE CKPC1 | |||
DEY | |||
LDA ($BB),Y | |||
LDX #$08 | |||
CMP #$45 ;E | |||
BEQ CKPC2 | |||
DEX | |||
CMP #$54 ;T | |||
BEQ CKPC2 | |||
CKPC1 RTS | |||
CKPC2 STX $BA | |||
PLA | |||
PLA | |||
JSR PRRT | |||
JSR BANK1 | |||
.BYTE $1B,$80 ;VECTOREN SETZEN | |||
;--------------------------------------- | |||
LDA #$00 | |||
STA $B9 | |||
TAX | |||
LDY #$0A | |||
JSR BANK1 | |||
.BYTE $D5,$FF ;LOAD | |||
;--------------------------------------- | |||
BCS CKPC3 | |||
JSR $0A00 | |||
JMP ($0334) | |||
CKPC3 JMP SPI2 | |||
;--------------------------------------- | |||
PARA10 LDY #$02 | |||
PARA11 LDA $1FD3,Y | |||
CMP PARFIL1,Y | |||
BNE PARA13 | |||
DEY | |||
BPL PARA11 | |||
LDA #$35 | |||
STA $1FD3 | |||
LDA #$39 | |||
STA $1FD4 | |||
STA $1FD5 | |||
LDA #$38 | |||
STA $1E8E | |||
PARA12 CLC | |||
RTS | |||
;--------------------------------------- | |||
PARFIL1 .BYTE $32,$35,$30 | |||
;--------------------------------------- | |||
PARA13 LDA #$FF | |||
STA $AB | |||
PARA14 INC $AB | |||
LDA $AB | |||
ASL A | |||
ASL A | |||
TAX | |||
LDA PATB1,X | |||
STA $8E | |||
LDA PATB1+1,X | |||
STA $8F | |||
BEQ PARA12 | |||
LDY #$02 | |||
SEI | |||
PARA15 JSR $02B3 | |||
CMP PARTX,Y | |||
BNE PARA14 | |||
DEY | |||
BPL PARA15 | |||
LDA PATB1+2,X | |||
STA $8E | |||
LDA PATB1+3,X | |||
STA $8F | |||
LDY #$48 | |||
PARA16 LDA PARR4,Y | |||
CMP #$BB | |||
BNE PARA17 | |||
TYA | |||
CLC | |||
ADC $8E | |||
STA $08EE | |||
LDA $8F | |||
ADC #$00 | |||
STA $08EF | |||
LDA #$A5 | |||
PARA17 JSR $02A7 | |||
DEY | |||
BPL PARA16 | |||
BMI PARA14 | |||
;--------------------------------------- | |||
PARTX .BYTE $A9,$F4 | |||
.BYTE $8D | |||
;--------------------------------------- | |||
PARR4 JSR $FFAE | |||
PARR5 LDA #$01 | |||
STA $B9 | |||
LDA #$08 | |||
STA $BA | |||
LDA #$00 | |||
STA $9D | |||
JSR $F4BB | |||
BCS PARR6 | |||
LDA #$00 | |||
STA $90 | |||
LDA #$01 | |||
STA $BA | |||
CLI | |||
CLC | |||
RTS | |||
PARR6 LDX $DC02 | |||
LDY $DC03 | |||
LDA #$FF | |||
STA $DC02 | |||
LDA #$00 | |||
STA $DC03 | |||
LDA #$7F | |||
STA $DC00 | |||
PARR7 LDA $DC01 | |||
CMP #$EF ;SPACE | |||
BNE PARR7 | |||
STX $DC02 | |||
STY $DC03 | |||
BEQ PARR5 | |||
;--------------------------------------- | |||
PATB1 .BYTE $E4,$AF,$00,$AF | |||
.BYTE $0E,$D0,$09,$D0 | |||
.BYTE $2B,$CF,$D9,$CE | |||
.BYTE $4A,$03,$45,$03 | |||
.BYTE $E4,$03,$B0,$02 | |||
.BYTE $00,$00 | |||
</pre> | |||
Revision as of 19:29, 23 August 2022
History
Action Replay MK3 was a shot at a complete freezer pack that allowed multi file tape games to be backed up along with the game and title picture to disk. Since for this to work out a little more than just freezing the computer state is required Datel teamed up with Dosoft (or acquired them, who knows?). With MK3 the Parameters and NOVA TRANSFER came to the ROM which we're looking into here. Before the MK3 there was no multi file loader support.
Parameters allow the owner of an original (tape, but in theory would also work for some disk titles) game to create a backup running off disk by loading a parameter into the freezer. By that the original loader is usually removed and replaced by standard routines working off the disk drive. Due to the freeze often happening after some loading screen or intro was shown the "Graphics Disk" contained demo maker alike programs to preserve such things as well. Also the "SceneStealer" extension stems from this idea of supplying a full package apparently.
Since Action Replay ROMs only offer the NOVA TRANSFER and would fail on anything else the Enhancement Disk comes with MULTIMENU 1.1 which has further descriptions for some Parameters as well as means of handling other tape loaders. It also contains the actual Parameter files required for patching the frozen program to disk routines.
When a major rewrite of the ROM happened with the "Pro" series (AR 4.2+) a few Parameters were re-worked but it seems most kept working and the system was slowly extended (for a complete list check Parameters List).
Datel never released intructions (as far as we know) on how to create own parameters or how to patch a game using the plain NOVALOAD to work without the Action Replay Turbolinker. Let us see if we can remedy this situation at Parameter Creation.
Parameters List
Click header for it :)
Usage
WE ARE MISSING especially english scans for Action Replay V5 (V6) Enhancement Disk Manuals!
The following quote is from the scan of Action Replay MK3 english manual supplement (Enhancement Disk v2.0).pdf.
Please note that this is just a rough outline and some blabla. The introduction text was changed on the documents we have. You'll get the basics anyhow.
ACTION REPLAY MK III ENHANCEMENT DISK - V2.0 -------------------------------------------- This disk contrains a collection of parameters and file copy routines for transfer of non-standard multistage tape programs to disk. Multistage programs are those which load extra parts as the program progresses. Until recently, these nearly always used the NOVALOAD system, and a system is built into ACTION REPLAY MK III to handle the majority of such programs - see manual for details. Most newer programs use individual loading systems, each of which must be handled in its own specail way. Transfer of multistage programs is a two part process: 1. ADDING THE PARAMETER ----------------------- This is done after freezing the main part of the program, before saving to disk.
a) Load the program up to the main title screen and freeze it. Stop the tape. Do not rewind it as the extra parts usually need to be transferred from this point. b) Select PARAMETERS from the menu (or press P). You will then be prompted "ENTER PARAMETER CODE". c) Insert the enhancement disk and enter the parameter code. This is a four charachter code unique to each program (see later). The relevant parameter will be loaded from the disk, and will make the necessary changes to the program. If you type the code wrongly, or have the wrong disk inserted, press a key and enter the code again. If you get the message "START TAPE", ignore this. Press RUN/STOP or RUN/RESTORE then P to return to the parameter prompt. d) Insert your output disk and save the program in the normal way. Always save the program to a blank disk, as the extra parts will take up a lot of disk space. 2. TRANSFERING THE EXTRA PARTS ------------------------------ a) Install FASTLOAD (or DISKMATE if you have the 32K cartridge). b) Insert the enhancement disk and enter LOAD"*",8 and RUN c) Follow the prompts and enter the parameter code (see later) d) Follow the onscreen prompts. Insert your output disk and ensure that the tape is inserted at the correct point. You should also have a second formatted disk handy, as some programs take up more than one disk side. e) The extra parts will now be automatically transferred to disk. If you get the message "NO SPACE ON DISK", insert a blank formatted disk and press return. When the tape runs out, switch off. Transfer is no complete. Program parts will load at turbo speed via FASTLOAD or DISKMATE. Where parts spread over more than one disk, and the program attempts to load a part which is on the other disk, the disk light will flash. If this happens insert the other disk and press SPACE to load. NOTES: When extra parts are on more than one tape side, ensure that the tapes are inserted in the correct order. Sometimes files are repeated on tape to avoid excessive winding. Repeated files need not to be saved to disk and will be ignored. When a multistage programs has been loaded via FASTLOAD or DISKMATE, the freeze button is disabled, as the fastloader needs to be available for loading extra parts. If the freeze facility is required, load the program via the LOADER with fastload disabled, in which case extra parts will load at standard speed.
Tech
;--------------------------------------- ; PARAMETER ;--------------------------------------- PARAM JSR PRINT .TEXT "PARAMETER CODE : " .BYTE $00 JSR GFN1 ; GET FILENAME BEQ SPRUNG3 JSR CHKPC LDY #$03 PARA1 LDA ($BB),Y ;FILENAME CMP PARFIL,Y BNE PARA2 DEY BPL PARA1 JSR PARA10 JMP PARA7 ;--------------------------------------- PARFIL .TEXT "NOVA" ;--------------------------------------- PARA2 LDA #$08 STA $BA JSR FOPEN BCC PARA4 CMP #$05 BEQ PARA3 PARA3 JMP SPI2 ;--------------------------------------- PARA4 LDA $AE CMP #$BB BNE PARA5 CMP $AF BEQ PARA9 PARA5 CLV PARA6 PHP JSR $FFAB JSR $F642 PLP BVS PARA7 JSR PRINT .BYTE $0D .TEXT "FILETYP FALSCH" .BYTE $00 JMP PARA8 ;--------------------------------------- PARA7 CLI JSR PRINT .BYTE $0D,$4F,$4B,$00 ;OK PARA8 JSR TSTBIT ;TASTE SPRUNG3 JMP ($0334) ;--------------------------------------- PARA9 LDX #$FB TXS BIT $90 BVS PARA6 JSR $FFA5 TAY JSR $FFA5 STA $BB STY $8D TYA ASL A TAY LDA PARTB+1,Y PHA LDA PARTB,Y PHA LDY #$00 RTS ;--------------------------------------- PRU1 JSR PRU3 STA $8E PRU2 JSR PRU3 STA $8F PRU3 LDA $BB PHA JSR $FFA5 STA $BB PRU4 BIT $90 BVS PARA9 PLA CMP #$BB BNE PRU5 CMP $BB BEQ PARA9 PRU5 CLC RTS ;--------------------------------------- PRR1 LDA #$40 STA $90 BNE PRU4 ;--------------------------------------- PARTB .WORD PRR1-1 .WORD PRR2-1 .WORD PRR3-1 .WORD PRR4-1 .WORD PRR5-1 .WORD PRR6-1 .WORD PRR6-1 .WORD PRR7-1 ;--------------------------------------- PRR2 JSR PRU1 JSR RCR JMP PRR2 ;--------------------------------------- PRR3 JSR PRU1 BCC PRR3B PRR3A JSR PRU3 PRR3B JSR RCR INC $8E BNE PRR3A INC $8F BNE PRR3A PRR4 JSR PRU2 STA $08E0 LDA $8F STA $08E1 JMP PRR4 ;--------------------------------------- PRR5 JSR PRU2 STA $08EF LDA $8F STA $08EE JMP PRR5 ;--------------------------------------- PRR6 JSR PRU1 STA ($8E),Y LDA $8E STA $7A LDA $8F STA $7B PRR6A JSR $FFA5 INC $8E BNE PRR6B INC $8F PRR6B STA ($8E),Y BIT $90 BVC PRR6A JSR $FFAB JSR $F642 LDA $8D CMP #$06 BEQ PRR6C JMP ($8E) PRR6C JMP ($7A) ;--------------------------------------- PRR7 JSR PRU3 JSR $FFD2 JMP PRR7 ;--------------------------------------- CHKPC LDY #$01 LDA ($BB),Y CMP #$2E BNE CKPC1 DEY LDA ($BB),Y LDX #$08 CMP #$45 ;E BEQ CKPC2 DEX CMP #$54 ;T BEQ CKPC2 CKPC1 RTS CKPC2 STX $BA PLA PLA JSR PRRT JSR BANK1 .BYTE $1B,$80 ;VECTOREN SETZEN ;--------------------------------------- LDA #$00 STA $B9 TAX LDY #$0A JSR BANK1 .BYTE $D5,$FF ;LOAD ;--------------------------------------- BCS CKPC3 JSR $0A00 JMP ($0334) CKPC3 JMP SPI2 ;--------------------------------------- PARA10 LDY #$02 PARA11 LDA $1FD3,Y CMP PARFIL1,Y BNE PARA13 DEY BPL PARA11 LDA #$35 STA $1FD3 LDA #$39 STA $1FD4 STA $1FD5 LDA #$38 STA $1E8E PARA12 CLC RTS ;--------------------------------------- PARFIL1 .BYTE $32,$35,$30 ;--------------------------------------- PARA13 LDA #$FF STA $AB PARA14 INC $AB LDA $AB ASL A ASL A TAX LDA PATB1,X STA $8E LDA PATB1+1,X STA $8F BEQ PARA12 LDY #$02 SEI PARA15 JSR $02B3 CMP PARTX,Y BNE PARA14 DEY BPL PARA15 LDA PATB1+2,X STA $8E LDA PATB1+3,X STA $8F LDY #$48 PARA16 LDA PARR4,Y CMP #$BB BNE PARA17 TYA CLC ADC $8E STA $08EE LDA $8F ADC #$00 STA $08EF LDA #$A5 PARA17 JSR $02A7 DEY BPL PARA16 BMI PARA14 ;--------------------------------------- PARTX .BYTE $A9,$F4 .BYTE $8D ;--------------------------------------- PARR4 JSR $FFAE PARR5 LDA #$01 STA $B9 LDA #$08 STA $BA LDA #$00 STA $9D JSR $F4BB BCS PARR6 LDA #$00 STA $90 LDA #$01 STA $BA CLI CLC RTS PARR6 LDX $DC02 LDY $DC03 LDA #$FF STA $DC02 LDA #$00 STA $DC03 LDA #$7F STA $DC00 PARR7 LDA $DC01 CMP #$EF ;SPACE BNE PARR7 STX $DC02 STY $DC03 BEQ PARR5 ;--------------------------------------- PATB1 .BYTE $E4,$AF,$00,$AF .BYTE $0E,$D0,$09,$D0 .BYTE $2B,$CF,$D9,$CE .BYTE $4A,$03,$45,$03 .BYTE $E4,$03,$B0,$02 .BYTE $00,$00
- Parameters List as supplied with the several Enhancement Disks