Skip to content

Commit 53c291a

Browse files
committed
add VBL task in replacement disk driver
this fixes wintergames
1 parent 098dd20 commit 53c291a

File tree

2 files changed

+44
-23
lines changed

2 files changed

+44
-23
lines changed

extras/mydriver/disk/mydriver.a

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,11 @@ RomBase EQU $00400000
179179
Lea.L (DrvQHdr),A1
180180
Jmp (RomBase + 2848)
181181

182+
VBLTaskFreq EQU $7FFF
183+
184+
VBLTaskProc
185+
MOVE.W VBLTaskFreq, $000A(A0)
186+
; fallthrough to return
182187

183188
NullTaskProc
184189
RTS
@@ -241,6 +246,18 @@ DOpen
241246
MOVE.L A3,D0
242247
BEQ.S @3
243248

249+
; Some games (Wintergames) manipulate the VBL
250+
; queue directly, and will break if the queue
251+
; was empty. Add a VBL task to prevent this.
252+
253+
MOVE.L #14, D0
254+
DC.W $A71E ; _NewPtr ,Sys,Clear
255+
LEA VBLTaskProc,A1
256+
MOVE.W #1,$0004(A0) ; task type
257+
MOVE.L A1,$0006(A0) ; task procedure
258+
MOVE.W VBLTaskFreq,$000A(A0)
259+
DC.W $A033 ; _VInstall
260+
244261
; There is apparently a bug in the time manager
245262
; in System 6.0.8, which will cause a crash
246263
; if there are no installed time

src/ROMEMDEV.c

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,55 +44,59 @@ LOCALVAR const ui3b sony_driver[] = {
4444
68k machine code, compiled from mydriver.a
4545
*/
4646
0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47-
0x00, 0xEE, 0x00, 0x18, 0x00, 0x24, 0x00, 0x4A,
47+
0x00, 0xF4, 0x00, 0x18, 0x00, 0x24, 0x00, 0x4A,
4848
0x00, 0x8A, 0x05, 0x2E, 0x53, 0x6F, 0x6E, 0x79,
4949
0x48, 0xE7, 0x00, 0xC0, 0x55, 0x4F, 0x3F, 0x3C,
5050
0x00, 0x01, 0x60, 0x30, 0x48, 0xE7, 0x00, 0xC0,
5151
0x55, 0x4F, 0x3F, 0x3C, 0x00, 0x02, 0x41, 0xFA,
52-
0x01, 0x84, 0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F,
52+
0x01, 0xA4, 0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F,
5353
0x5C, 0x4F, 0x30, 0x1F, 0x4C, 0xDF, 0x03, 0x00,
5454
0x0C, 0x68, 0x00, 0x01, 0x00, 0x1A, 0x66, 0x1E,
5555
0x4E, 0x75, 0x48, 0xE7, 0x00, 0xC0, 0x55, 0x4F,
56-
0x3F, 0x3C, 0x00, 0x03, 0x41, 0xFA, 0x01, 0x5E,
56+
0x3F, 0x3C, 0x00, 0x03, 0x41, 0xFA, 0x01, 0x7E,
5757
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
5858
0x30, 0x1F, 0x4C, 0xDF, 0x03, 0x00, 0x32, 0x28,
5959
0x00, 0x06, 0x08, 0x01, 0x00, 0x09, 0x67, 0x0C,
6060
0x4A, 0x40, 0x6F, 0x02, 0x42, 0x40, 0x31, 0x40,
6161
0x00, 0x10, 0x4E, 0x75, 0x4A, 0x40, 0x6F, 0x04,
6262
0x42, 0x40, 0x4E, 0x75, 0x2F, 0x38, 0x08, 0xFC,
6363
0x4E, 0x75, 0x48, 0xE7, 0x00, 0xC0, 0x55, 0x4F,
64-
0x3F, 0x3C, 0x00, 0x04, 0x41, 0xFA, 0x01, 0x1E,
64+
0x3F, 0x3C, 0x00, 0x04, 0x41, 0xFA, 0x01, 0x3E,
6565
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
6666
0x30, 0x1F, 0x4C, 0xDF, 0x03, 0x00, 0x4E, 0x75,
6767
0x48, 0xE7, 0xE0, 0xC0, 0x20, 0x2F, 0x00, 0x14,
6868
0x59, 0x4F, 0x2F, 0x00, 0x55, 0x4F, 0x3F, 0x3C,
69-
0x00, 0x08, 0x41, 0xFA, 0x00, 0xF8, 0x2F, 0x18,
69+
0x00, 0x08, 0x41, 0xFA, 0x01, 0x18, 0x2F, 0x18,
7070
0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F, 0x32, 0x1F,
7171
0x58, 0x4F, 0x20, 0x1F, 0x4A, 0x41, 0x66, 0x06,
7272
0x30, 0x7C, 0x00, 0x07, 0xA0, 0x2F, 0x4C, 0xDF,
7373
0x03, 0x07, 0x58, 0x4F, 0x4E, 0x73, 0x21, 0x40,
7474
0x00, 0x06, 0x43, 0xF8, 0x03, 0x08, 0x4E, 0xF9,
75-
0x00, 0x40, 0x0B, 0x20, 0x4E, 0x75, 0x48, 0xE7,
76-
0x1F, 0x10, 0x48, 0xE7, 0x00, 0xC0, 0x5D, 0x4F,
77-
0x3F, 0x3C, 0x00, 0x05, 0x41, 0xFA, 0x00, 0xB6,
78-
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
79-
0x30, 0x1F, 0x2E, 0x1F, 0x0C, 0x40, 0xFF, 0xCF,
80-
0x66, 0x06, 0x42, 0x40, 0x60, 0x00, 0x00, 0x8E,
81-
0x4A, 0x40, 0x66, 0x00, 0x00, 0x88, 0x20, 0x07,
82-
0xA7, 0x1E, 0x26, 0x48, 0x20, 0x0B, 0x67, 0x00,
83-
0x00, 0x86, 0x9E, 0xFC, 0x00, 0x10, 0x2F, 0x0B,
84-
0x2F, 0x07, 0x55, 0x4F, 0x3F, 0x3C, 0x00, 0x06,
85-
0x41, 0xFA, 0x00, 0x7A, 0x2F, 0x18, 0x20, 0x50,
86-
0x20, 0x8F, 0x5C, 0x4F, 0x30, 0x1F, 0x50, 0x4F,
87-
0x2E, 0x1F, 0x76, 0x00, 0x36, 0x1F, 0x38, 0x1F,
88-
0x3C, 0x1F, 0x3A, 0x1F, 0x26, 0x5F, 0x4A, 0x40,
89-
0x66, 0x4A, 0x20, 0x0B, 0x67, 0x0E, 0x41, 0xFA,
90-
0xFF, 0x8C, 0x27, 0x48, 0x00, 0x06, 0x20, 0x4B,
91-
0xA0, 0x58, 0x60, 0x1A, 0x41, 0xFA, 0xFF, 0x70,
75+
0x00, 0x40, 0x0B, 0x20, 0x31, 0x78, 0x7F, 0xFF,
76+
0x00, 0x0A, 0x4E, 0x75, 0x48, 0xE7, 0x1F, 0x10,
77+
0x48, 0xE7, 0x00, 0xC0, 0x5D, 0x4F, 0x3F, 0x3C,
78+
0x00, 0x05, 0x41, 0xFA, 0x00, 0xD0, 0x2F, 0x18,
79+
0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F, 0x30, 0x1F,
80+
0x2E, 0x1F, 0x0C, 0x40, 0xFF, 0xCF, 0x66, 0x06,
81+
0x42, 0x40, 0x60, 0x00, 0x00, 0xA8, 0x4A, 0x40,
82+
0x66, 0x00, 0x00, 0xA2, 0x20, 0x07, 0xA7, 0x1E,
83+
0x26, 0x48, 0x20, 0x0B, 0x67, 0x00, 0x00, 0xA0,
84+
0x9E, 0xFC, 0x00, 0x10, 0x2F, 0x0B, 0x2F, 0x07,
85+
0x55, 0x4F, 0x3F, 0x3C, 0x00, 0x06, 0x41, 0xFA,
86+
0x00, 0x94, 0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F,
87+
0x5C, 0x4F, 0x30, 0x1F, 0x50, 0x4F, 0x2E, 0x1F,
88+
0x76, 0x00, 0x36, 0x1F, 0x38, 0x1F, 0x3C, 0x1F,
89+
0x3A, 0x1F, 0x26, 0x5F, 0x4A, 0x40, 0x66, 0x64,
90+
0x20, 0x0B, 0x67, 0x28, 0x70, 0x0E, 0xA7, 0x1E,
91+
0x43, 0xFA, 0xFF, 0x82, 0x31, 0x7C, 0x00, 0x01,
92+
0x00, 0x04, 0x21, 0x49, 0x00, 0x06, 0x31, 0x78,
93+
0x7F, 0xFF, 0x00, 0x0A, 0xA0, 0x33, 0x41, 0xFA,
94+
0xFF, 0x72, 0x27, 0x48, 0x00, 0x06, 0x20, 0x4B,
95+
0xA0, 0x58, 0x60, 0x1A, 0x41, 0xFA, 0xFF, 0x50,
9296
0x30, 0x3C, 0xA0, 0x4E, 0xA0, 0x47, 0x60, 0x0E,
9397
0x20, 0x47, 0x30, 0x06, 0x48, 0x40, 0x30, 0x05,
9498
0xA0, 0x4E, 0xDE, 0x83, 0x52, 0x46, 0x51, 0xCC,
95-
0xFF, 0xF0, 0x48, 0x7A, 0xFF, 0x1C, 0x55, 0x4F,
99+
0xFF, 0xF0, 0x48, 0x7A, 0xFE, 0xFC, 0x55, 0x4F,
96100
0x3F, 0x3C, 0x00, 0x07, 0x41, 0xFA, 0x00, 0x1E,
97101
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
98102
0x30, 0x1F, 0x58, 0x4F, 0x4C, 0xDF, 0x03, 0x00,

0 commit comments

Comments
 (0)