Forcing LCDGamesMode on when using a multi scan monitor

Discuss LCDGameModes by Steve Harrison
Idge
Posts: 29
Joined: Wed Feb 02, 2022 9:45 pm

Forcing LCDGamesMode on when using a multi scan monitor

Post by Idge »

I am trying to work out how to force lcdgames mode to be on even when using a multi scan monitor if that is possible?
The reason I ask is although absolutely everything else works on my benq bl702a monitor, boogie buggy doesn’t.
If I change my monitor type to vga, then it works albeit in a squashed half of the screen.
I am guessing that this is because LCDGames mode does not kick in if multi scan monitors are attached.
Is there anyway I can just create a new run file for this game that turns on LCDGamesMode just when running this?

Cheers
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

Off the top of my head, I don't remember if Boogie Buggie has a mode Module. If it does, it's likely its checking for specific monitor types which might be the root cause of the blank screen, in which case LCDGameModes might not help on a Multi-sync as the game might be using incorrect VIDC parameters to start with.

If the monitor supports 15KHz, do you get an image in the game when MonitorType is set to 0 (TV)?

As you've noticed, LCDGameModes only kicks in with MonitorType 3/4 (VGA/SVGA) and will attempt to correct the screen ratio using timings within the VGA spec.
Idge
Posts: 29
Joined: Wed Feb 02, 2022 9:45 pm

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by Idge »

JonAbbott wrote: Sun May 01, 2022 6:46 am If the monitor supports 15KHz, do you get an image in the game when MonitorType is set to 0 (TV)?
The Game loads fine and displays the Boogie Buggy intro screen and level select screen and the side view levels work fine. If loading one of the top down levels then you get the bars at the top and bottom displaying, but just black screen in the middle which is strange, as its clearly displaying an image, just not the middle frame.
I get the same issue when monitor set to tv mode. See below
IMG_8575 (1).jpg
IMG_8575 (1).jpg (726.45 KiB) Viewed 948 times
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

If it hasn't hung, I would guess the screen memory allocation is possibly wrong? I'd have to check the ADFFS Boot script to see what it requires although I have a vague recollection that it's an odd amount.

I presume you're running it direct from floppy?

EDIT: It requires 256K of screen memory
Idge
Posts: 29
Joined: Wed Feb 02, 2022 9:45 pm

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by Idge »

I am just using the disk images and using boot floppy via ADFFS.
I have the APDL bundled version on CD as well, but that unfortunately does not work at all, as it needs RISCOS 4+ to work.
I'll double check the screen memory and see, but shouldn't be an issue as I have a 4MB machine
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

Try running it directly to see if there's an issue with the ADFFS Boot script.

Having not really played the game, how do I get to the level you're seeing this on, so I can try and reproduce it?

I know this game does have at least one bug that I need to fix (swapping discs), some other bugs are already fixed in the Boot script but you'd need to run it on a modern machine running RO5.

EDIT: I think its Sweet Meadow that you're seeing the blank screen on? On a Pi, there's a pause on a screen that looks like your screenshot before it loads and shows the level. There's also a Page Zero access that occurs shortly after.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

Having checked the bugs the Boot script is currently fixing, you're falling foul of the "stuck in loop on Disc 3 levels". If I remove that fix, I see the same problem as you.

Make a copy of Disc 3, then edit !Disk_3.GAME.PVC and change the word @ C6C0 from &0A000005 to &E1A00000 - that might get it working. From the Supervisor prompt:

Code: Select all

LOAD !Disk_3.GAME.PVC 9000
MEMORYA C6C0 E1A00000
SAVE !Disk_3.GAME.PVC 9000+CB74
That's a temporary fix I put in a while back, I've yet to investigate what the code is actually supposed to be doing.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

Here's a better fix which also gets it running on HD without the floppies being needed. I've only tested it on a Pi although it will implement all the bugfixes on your machine.
  1. Copy the !BUGGY folder from disk 1 to your HD
  2. Copy the contents of !Disk_2.GAME to !BUGGY.GAME
  3. Copy the contents of !Disk_3.GAME to !BUGGY.GAME
  4. Replace !BUGGY.!RUN with the script below: (use the script in the later post, in preference to this one)

Code: Select all

SET Game$Dir <Obey$Dir>
SET ExSound$Dir <Obey$Dir>
SET Sounds$Dir <Obey$Dir>.Sounds
RMEnsure ExSound 3.30 RMLoad ADFFS:trackers.ExSound
Set File$Type_C74 Sound

WimpSlot -min 592k -max 592k
| Allow game to run from HD
SetEval fix$up 1
IfThere <Game$Dir>.GAME.PVC THEN ELSE SetEval fix$up 0
IfThere <Game$Dir>.15-05-22 THEN SetEval fix$up 0
IF fix$up THEN ECHO Patching GAME.TC
IF fix$up THEN LOAD <GAME$DIR>.GAME.TC 12000
IF fix$up THEN MEMORYA 14488 20202020 { > null: }
IF fix$up THEN MEMORYA 1448C 3C202020 { > null: }
IF fix$up THEN MEMORYA 14490 656D6147 { > null: }
IF fix$up THEN MEMORYA 14494 72694424 { > null: }
IF fix$up THEN MEMORYA B 14498 3E { > null: }
IF fix$up THEN MEMORYA 162DC 20202020 { > null: }
IF fix$up THEN MEMORYA 162E0 20202020 { > null: }
IF fix$up THEN MEMORYA 162E4 4D41473C { > null: }
IF fix$up THEN MEMORYA 162E8 69442445 { > null: }
IF fix$up THEN MEMORYA B 162EC 72 { > null: }
IF fix$up THEN MEMORYA B 162ED 3E { > null: }
IF fix$up THEN MEMORYA 16300 20202020 { > null: }
IF fix$up THEN MEMORYA 16304 20202020 { > null: }
IF fix$up THEN MEMORYA 16308 4D41473C { > null: }
IF fix$up THEN MEMORYA 1630C 69442445 { > null: }
IF fix$up THEN MEMORYA B 16310 72 { > null: }
IF fix$up THEN MEMORYA B 16311 3E { > null: }
IF fix$up THEN MEMORYA 163B0 20202020 { > null: }
IF fix$up THEN MEMORYA 163B4 3C202020 { > null: }
IF fix$up THEN MEMORYA 163B8 656D6147 { > null: }
IF fix$up THEN MEMORYA 163BC 72694424 { > null: }
IF fix$up THEN MEMORYA B 163C0 3E { > null: }
IF fix$up THEN MEMORYA 163E0 20202020 { > null: }
IF fix$up THEN MEMORYA 163E4 3C202020 { > null: }
IF fix$up THEN MEMORYA 163E8 656D6147 { > null: }
IF fix$up THEN MEMORYA 163EC 72694424 { > null: }
IF fix$up THEN MEMORYA B 163F0 3E { > null: }
| Bug fix: Page zero access in TC
IF fix$up THEN MEMORYA 14104 E35300FE { > null: }
IF fix$up THEN MEMORYA 14108 08FD8002 { > null: }
IF fix$up THEN MEMORYA 1410C E8BD4020 { > null: }
| Don't use FIQ mode
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 131E0 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 131E4 E8847F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13264 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13268 E8947F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13280 1AFFFFD6 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13284 E1A0F00E { > null: }
| Don't wait on ServiceCall &47
|IF fix$up THEN MEMORYA 12854 E1A00000 { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.TC 12000+4438
IF fix$up THEN ECHO Patching GAME.PV
IF fix$up THEN LOAD <GAME$DIR>.GAME.PV 9780
IF fix$up THEN MEMORYA 97D4 20202020 { > null: }
IF fix$up THEN MEMORYA 97D8 20202020 { > null: }
IF fix$up THEN MEMORYA 97DC 4D41473C { > null: }
IF fix$up THEN MEMORYA 97E0 69442445 { > null: }
IF fix$up THEN MEMORYA B 97E4 72 { > null: }
IF fix$up THEN MEMORYA B 97E5 3E { > null: }
IF fix$up THEN MEMORYA 97FC 20202020 { > null: }
IF fix$up THEN MEMORYA 9800 20202020 { > null: }
IF fix$up THEN MEMORYA 9804 4D41473C { > null: }
IF fix$up THEN MEMORYA 9808 69442445 { > null: }
IF fix$up THEN MEMORYA B 980C 72 { > null: }
IF fix$up THEN MEMORYA B 980D 3E { > null: }
IF fix$up THEN MEMORYA 9824 20202020 { > null: }
IF fix$up THEN MEMORYA 9828 20202020 { > null: }
IF fix$up THEN MEMORYA 982C 4D41473C { > null: }
IF fix$up THEN MEMORYA 9830 69442445 { > null: }
IF fix$up THEN MEMORYA B 9834 72 { > null: }
IF fix$up THEN MEMORYA B 9835 3E { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.PV 9780+C8 8000 8000
IF fix$up THEN ECHO Patching GAME.PVC
IF fix$up THEN LOAD <GAME$DIR>.GAME.PVC 9000
IF fix$up THEN MEMORYA 9024 20202020 { > null: }
IF fix$up THEN MEMORYA 9028 3C202020 { > null: }
IF fix$up THEN MEMORYA 902C 656D6147 { > null: }
IF fix$up THEN MEMORYA 9030 72694424 { > null: }
IF fix$up THEN MEMORYA B 9034 3E { > null: }
IF fix$up THEN MEMORYA 9048 20202020 { > null: }
IF fix$up THEN MEMORYA 904C 3C202020 { > null: }
IF fix$up THEN MEMORYA 9050 656D6147 { > null: }
IF fix$up THEN MEMORYA 9054 72694424 { > null: }
IF fix$up THEN MEMORYA B 9058 3E { > null: }
| Bug fix: stuck in loop on Disc 3 levels
IF fix$up THEN MEMORYA C6C0 E1A00000 { > null: }
| Bug fix: Page zero access @ CB18
IF fix$up THEN MEMORYA CAE0 11B0F00E { > null: }
| Don't use FIQ mode
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E458 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E45C E8847F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4DC E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4E0 E8947F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4F8 1AFFFFD6 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4FC E1A0F00E { > null: }
| Don't wait on ServiceCall &47
|IF fix$up THEN MEMORYA C4DC E1A00000 { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.PVC 9000+CB74
IF fix$up THEN ECHO Patching GAME.SO
IF fix$up THEN LOAD <GAME$DIR>.GAME.SO 95AC
IF fix$up THEN MEMORYA 95E4 20202020 { > null: }
IF fix$up THEN MEMORYA 95E8 20202020 { > null: }
IF fix$up THEN MEMORYA 95EC 4D41473C { > null: }
IF fix$up THEN MEMORYA 95F0 69442445 { > null: }
IF fix$up THEN MEMORYA B 95F4 72 { > null: }
IF fix$up THEN MEMORYA B 95F5 3E { > null: }
IF fix$up THEN MEMORYA 960C 20202020 { > null: }
IF fix$up THEN MEMORYA 9610 20202020 { > null: }
IF fix$up THEN MEMORYA 9614 4D41473C { > null: }
IF fix$up THEN MEMORYA 9618 69442445 { > null: }
IF fix$up THEN MEMORYA B 961C 72 { > null: }
IF fix$up THEN MEMORYA B 961D 3E { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.SO 95AC+84 8000 8000
IF fix$up THEN ECHO Patching GAME.SOC
IF fix$up THEN LOAD <GAME$DIR>.GAME.SOC 9000
IF fix$up THEN MEMORYA 900C 20202020 { > null: }
IF fix$up THEN MEMORYA 9010 3C202020 { > null: }
IF fix$up THEN MEMORYA 9014 656D6147 { > null: }
IF fix$up THEN MEMORYA 9018 72694424 { > null: }
IF fix$up THEN MEMORYA B 901C 3E { > null: }
IF fix$up THEN MEMORYA 9030 20202020 { > null: }
IF fix$up THEN MEMORYA 9034 3C202020 { > null: }
IF fix$up THEN MEMORYA 9038 656D6147 { > null: }
IF fix$up THEN MEMORYA 903C 72694424 { > null: }
IF fix$up THEN MEMORYA B 9040 3E { > null: }
| Bug fix: Page zero access in SOC @ AF24
IF fix$up THEN MEMORYA B4E8 0A00001A { > null: }
IF fix$up THEN MEMORYA B4F0 0A000018 { > null: }
| Don't use FIQ mode
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9E7C E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9E80 E8847F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F04 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F08 E8947F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F20 1AFFFFD5 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F24 E1A0F00E { > null: }
| Don't wait on ServiceCall &47
|IF fix$up THEN MEMORYA 9A60 E1A00000 { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.SOC 9000+50F4
IF fix$up THEN SAVE <GAME$DIR>.15-05-22 8000+1
UnSet fix$up

IF ADFFS$OSVersion>=&35000 THEN ADFRemapVideoMemory 13 256 ELSE ScreenSize 256
ADFJoystickKeys J1 L=78 R=79 U=87 B1=71 B2=70
| Z      / Left     - Rotate left
| X      / Right    - Rotate right
| /      / Up       - Move forward
| RETURN / B1       - Jump
| '      / B2       - Turbo speed

| Prevent CPU mode change, set R13 and don't change the Exception handler
LOAD <GAME$Dir>.!START
IF ADFFS$OSVersion>=&35000 THEN MEMORYA 8000 EF000010 { > null: }
IF ADFFS$OSVersion>=&35000 THEN MEMORYA 8004 E1A0D001 { > null: }
IF ADFFS$OSVersion>=&35000 THEN MEMORYA 800C E1A00000 { > null: }

IF ADFFS$OSVersion>=&35000 THEN GOARM3JIT 0
GO 8000
ADFJoystickKeys
IF ADFFS$OSVersion>=&35000 THEN GOARM3JIT
IF ADFFS$OSVersion>=&35000 THEN ADFRemapVideoMemory
RMKill ExSound
UnSet Game$Dir
UnSet ExSound$Dir
UnSet Sounds$Dir
Back
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

Try the script above. It might work, it might not - let me know.

The game is getting stuck in a loop waiting for the FIQ vector to be released when loading a level under emulation. I suspect that might be emulator related and may behave differently on a physical machine, as FIQ will be actively used by ADFS when the game is launched.

Under emulation I'm seeing some odd things. ADFS doesn't release the FIQ vector after being RMReInit'd and only clears it after a floppy is touched - that sounds like a bug in ADFS. Something is also claiming the FIQ vector and not releasing it, which is why I'm seeing it get stuck in a loop.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Forcing LCDGamesMode on when using a multi scan monitor

Post by JonAbbott »

Here's the final script. I'm posting it separately as it modifies the sprite code to not use the FIQ vector - that has an impact on the game's blitter performance. It will need testing on physical to see if the impact to performance is an issue, particularly on the title scroller.

It will work on all OS versions, patching the files appropriately for the platform its running on. Just be aware that you won't be able to move the game between platforms once patched as its not dynamically patching.

If you've already tried the script I posted previously, replace TC, SOC and PVC from the original floppies before using this script.

The game needs proper play-testing under the ADFFS 2.80 beta on a Pi to ensure there aren't any other bugs I need to fix.

Code: Select all

| Install to HD:
| 1. Copy !BUGGY from disk 1
| 2. Copy the contents of !Disk_2.GAME to !BUGGY.GAME
| 3. Copy the contents of !Disk_3.GAME to !BUGGY.GAME
| 4. Replace !RUN with this file
SET Game$Dir <Obey$Dir>
SET ExSound$Dir <Obey$Dir>
SET Sounds$Dir <Obey$Dir>.Sounds
RMEnsure ExSound 3.30 RMLoad ADFFS:trackers.ExSound
Set File$Type_C74 Sound

WimpSlot -min 592k -max 592k
| Allow game to run from HD
SetEval fix$up 1
IfThere <Game$Dir>.GAME.PVC THEN ELSE ERROR Boogie Buggy needs installing to HD to work correctly, refer to !ADFFS.obey.F1005301
IfThere <Game$Dir>.17-05-22 THEN SetEval fix$up 0
IF fix$up THEN ECHO Patching GAME.TC
IF fix$up THEN LOAD <GAME$DIR>.GAME.TC 12000
IF fix$up THEN MEMORYA 14488 20202020 { > null: }
IF fix$up THEN MEMORYA 1448C 3C202020 { > null: }
IF fix$up THEN MEMORYA 14490 656D6147 { > null: }
IF fix$up THEN MEMORYA 14494 72694424 { > null: }
IF fix$up THEN MEMORYA B 14498 3E { > null: }
IF fix$up THEN MEMORYA 162DC 20202020 { > null: }
IF fix$up THEN MEMORYA 162E0 20202020 { > null: }
IF fix$up THEN MEMORYA 162E4 4D41473C { > null: }
IF fix$up THEN MEMORYA 162E8 69442445 { > null: }
IF fix$up THEN MEMORYA B 162EC 72 { > null: }
IF fix$up THEN MEMORYA B 162ED 3E { > null: }
IF fix$up THEN MEMORYA 16300 20202020 { > null: }
IF fix$up THEN MEMORYA 16304 20202020 { > null: }
IF fix$up THEN MEMORYA 16308 4D41473C { > null: }
IF fix$up THEN MEMORYA 1630C 69442445 { > null: }
IF fix$up THEN MEMORYA B 16310 72 { > null: }
IF fix$up THEN MEMORYA B 16311 3E { > null: }
IF fix$up THEN MEMORYA 163B0 20202020 { > null: }
IF fix$up THEN MEMORYA 163B4 3C202020 { > null: }
IF fix$up THEN MEMORYA 163B8 656D6147 { > null: }
IF fix$up THEN MEMORYA 163BC 72694424 { > null: }
IF fix$up THEN MEMORYA B 163C0 3E { > null: }
IF fix$up THEN MEMORYA 163E0 20202020 { > null: }
IF fix$up THEN MEMORYA 163E4 3C202020 { > null: }
IF fix$up THEN MEMORYA 163E8 656D6147 { > null: }
IF fix$up THEN MEMORYA 163EC 72694424 { > null: }
IF fix$up THEN MEMORYA B 163F0 3E { > null: }
| Bug fix: Page zero access in TC
IF fix$up THEN MEMORYA 14104 E35300FE { > null: }
IF fix$up THEN MEMORYA 14108 08FD8002 { > null: }
IF fix$up THEN MEMORYA 1410C E8BD4020 { > null: }
| Don't use FIQ mode
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 131E0 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 131E4 E8847F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13264 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13268 E8947F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13280 1AFFFFD6 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 13284 E1A0F00E { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 131E4 EBFFD3C5 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 13264 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 13268 E9143F00 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 13284 EAFFD3A1 { > null: }
| Don't disable FIQ
IF fix$up THEN MEMORYA 12848 EA000005 { > null: }
iF fix$up THEN MEMORYA 1615C 1A000015 { > null: }
IF fix$up THEN MEMORYA 16160 E8BD8000 { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.TC 12000+4438
IF fix$up THEN ECHO Patching GAME.PV
IF fix$up THEN LOAD <GAME$DIR>.GAME.PV 9780
IF fix$up THEN MEMORYA 97D4 20202020 { > null: }
IF fix$up THEN MEMORYA 97D8 20202020 { > null: }
IF fix$up THEN MEMORYA 97DC 4D41473C { > null: }
IF fix$up THEN MEMORYA 97E0 69442445 { > null: }
IF fix$up THEN MEMORYA B 97E4 72 { > null: }
IF fix$up THEN MEMORYA B 97E5 3E { > null: }
IF fix$up THEN MEMORYA 97FC 20202020 { > null: }
IF fix$up THEN MEMORYA 9800 20202020 { > null: }
IF fix$up THEN MEMORYA 9804 4D41473C { > null: }
IF fix$up THEN MEMORYA 9808 69442445 { > null: }
IF fix$up THEN MEMORYA B 980C 72 { > null: }
IF fix$up THEN MEMORYA B 980D 3E { > null: }
IF fix$up THEN MEMORYA 9824 20202020 { > null: }
IF fix$up THEN MEMORYA 9828 20202020 { > null: }
IF fix$up THEN MEMORYA 982C 4D41473C { > null: }
IF fix$up THEN MEMORYA 9830 69442445 { > null: }
IF fix$up THEN MEMORYA B 9834 72 { > null: }
IF fix$up THEN MEMORYA B 9835 3E { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.PV 9780+C8 8000 8000
IF fix$up THEN ECHO Patching GAME.PVC
IF fix$up THEN LOAD <GAME$DIR>.GAME.PVC 9000
IF fix$up THEN MEMORYA 9024 20202020 { > null: }
IF fix$up THEN MEMORYA 9028 3C202020 { > null: }
IF fix$up THEN MEMORYA 902C 656D6147 { > null: }
IF fix$up THEN MEMORYA 9030 72694424 { > null: }
IF fix$up THEN MEMORYA B 9034 3E { > null: }
IF fix$up THEN MEMORYA 9048 20202020 { > null: }
IF fix$up THEN MEMORYA 904C 3C202020 { > null: }
IF fix$up THEN MEMORYA 9050 656D6147 { > null: }
IF fix$up THEN MEMORYA 9054 72694424 { > null: }
IF fix$up THEN MEMORYA B 9058 3E { > null: }
| Bug fix: stuck in loop on Disc 3 levels
IF fix$up THEN MEMORYA C6C0 E1A00000 { > null: }
| Bug fix: Page zero access @ CB18
IF fix$up THEN MEMORYA CAE0 11B0F00E { > null: }
| Don't use FIQ mode
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E458 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E45C E8847F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4DC E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4E0 E8947F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4F8 1AFFFFD6 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA E4FC E1A0F00E { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA E45C EBFFE727 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA E4DC E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA E4E0 E9143F00 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA E4FC EAFFE703 { > null: }
| Don't disable FIQ
IF fix$up THEN MEMORYA 9154 E1A00000 { > null: }
IF fix$up THEN MEMORYA 9160 E8BD8000 { > null: }
IF fix$up THEN MEMORYA C4D0 EA000005 { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.PVC 9000+CB74
IF fix$up THEN ECHO Patching GAME.SO
IF fix$up THEN LOAD <GAME$DIR>.GAME.SO 95AC
IF fix$up THEN MEMORYA 95E4 20202020 { > null: }
IF fix$up THEN MEMORYA 95E8 20202020 { > null: }
IF fix$up THEN MEMORYA 95EC 4D41473C { > null: }
IF fix$up THEN MEMORYA 95F0 69442445 { > null: }
IF fix$up THEN MEMORYA B 95F4 72 { > null: }
IF fix$up THEN MEMORYA B 95F5 3E { > null: }
IF fix$up THEN MEMORYA 960C 20202020 { > null: }
IF fix$up THEN MEMORYA 9610 20202020 { > null: }
IF fix$up THEN MEMORYA 9614 4D41473C { > null: }
IF fix$up THEN MEMORYA 9618 69442445 { > null: }
IF fix$up THEN MEMORYA B 961C 72 { > null: }
IF fix$up THEN MEMORYA B 961D 3E { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.SO 95AC+84 8000 8000
IF fix$up THEN ECHO Patching GAME.SOC
IF fix$up THEN LOAD <GAME$DIR>.GAME.SOC 9000
IF fix$up THEN MEMORYA 900C 20202020 { > null: }
IF fix$up THEN MEMORYA 9010 3C202020 { > null: }
IF fix$up THEN MEMORYA 9014 656D6147 { > null: }
IF fix$up THEN MEMORYA 9018 72694424 { > null: }
IF fix$up THEN MEMORYA B 901C 3E { > null: }
IF fix$up THEN MEMORYA 9030 20202020 { > null: }
IF fix$up THEN MEMORYA 9034 3C202020 { > null: }
IF fix$up THEN MEMORYA 9038 656D6147 { > null: }
IF fix$up THEN MEMORYA 903C 72694424 { > null: }
IF fix$up THEN MEMORYA B 9040 3E { > null: }
| Bug fix: Page zero access in SOC @ AF24
IF fix$up THEN MEMORYA B4E8 0A00001A { > null: }
IF fix$up THEN MEMORYA B4F0 0A000018 { > null: }
| Don't use FIQ mode
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9E7C E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9E80 E8847F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F04 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F08 E8947F00 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F20 1AFFFFD5 { > null: }
IF fix$up AND ADFFS$OSVersion>=&35000 THEN MEMORYA 9F24 E1A0F00E { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 9E80 EBFFF89E { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 9F04 E3A04C81 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 9F08 E9143F00 { > null: }
IF fix$up AND ADFFS$OSVersion<&35000 THEN MEMORYA 9F24 EAFFF879 { > null: }
| Don't disable FIQ
IF fix$up THEN MEMORYA 90F4 E1A00000 { > null: }
IF fix$up THEN MEMORYA 9100 E8BD8000 { > null: }
IF fix$up THEN MEMORYA 9A54 EA000005 { > null: }
IF fix$up THEN SAVE <GAME$DIR>.GAME.SOC 9000+50F4
IF fix$up THEN SAVE <GAME$DIR>.17-05-22 8000+1
UnSet fix$up

IF ADFFS$OSVersion>=&35000 THEN ADFRemapVideoMemory 13 256 ELSE ScreenSize 256
ADFJoystickKeys J1 L=78 R=79 U=87 B1=71 B2=70
| Z      / Left     - Rotate left
| X      / Right    - Rotate right
| /      / Up       - Move forward
| RETURN / B1       - Jump
| '      / B2       - Turbo speed

| Prevent CPU mode change, set R13 and don't change the Exception handler
LOAD <GAME$Dir>.!START
IF ADFFS$OSVersion>=&35000 THEN MEMORYA 8000 EF000010 { > null: }
IF ADFFS$OSVersion>=&35000 THEN MEMORYA 8004 E1A0D001 { > null: }
IF ADFFS$OSVersion>=&35000 THEN MEMORYA 800C E1A00000 { > null: }

IF ADFFS$OSVersion>=&35000 THEN GOARM3JIT 0
MEMORYA 81A4 EF000011 { > null: }
GO 8000
| Put our FIQ fixup code @ 8100
MEMORYA 8100 E3A04C81 { > null: }
MEMORYA 8104 E9043F00 { > null: }
MEMORYA 8108 E33F03C2 { > null: }
MEMORYA 810C E1A0F00E { > null: }
MEMORYA 8110 E3A04C81 { > null: }
MEMORYA 8114 E9143F00 { > null: }
MEMORYA 8118 E33F0003 { > null: }
MEMORYA 811C E8BD8000 { > null: }
GO 12000
ADFJoystickKeys
IF ADFFS$OSVersion>=&35000 THEN GOARM3JIT
IF ADFFS$OSVersion>=&35000 THEN ADFRemapVideoMemory
RMKill ExSound
UnSet Game$Dir
UnSet ExSound$Dir
UnSet Sounds$Dir
Back
Post Reply