Author Topic: QfG1 remake's EGA640.DRV  (Read 6809 times)

0 Members and 1 Guest are viewing this topic.

Offline Te Rangi

Re:QfG1 remake's EGA640.DRV
« Reply #15 on: September 21, 2002, 06:04:24 AM »
Maybe an SCI launcher? (list of games, options etc.) It would work for me, because my partition on the harddrive is like a big maze that confuses everyone.

Pikachu14

  • Guest
Re:QfG1 remake's EGA640.DRV
« Reply #16 on: September 21, 2002, 06:15:00 AM »
But how?

Ravi, how did you make that driver?

Offline Chris Cromer

Re:QfG1 remake's EGA640.DRV
« Reply #17 on: September 21, 2002, 07:08:51 AM »
He made it in a programming language. ::)

He disasembled the original drivers most likely then used what he learned from it to make his own driver. It only takes a basic knowledge or programming.
Chris Cromer

It's all fun and games until someone get's hurt then it's just fun. ;)

Pikachu14

  • Guest
Re:QfG1 remake's EGA640.DRV
« Reply #18 on: September 21, 2002, 07:15:28 AM »
I knew that, but how do the drivers work?

Offline Chris Cromer

Re:QfG1 remake's EGA640.DRV
« Reply #19 on: September 21, 2002, 07:17:20 AM »
Quote
I knew that, but how do the drivers work?
Well you have 2 choices, either disasemble a driver and see what it does, or read some docs on ravi's site about the structure of it.

Maybe an SCI launcher? (list of games, options etc.) It would work for me, because my partition on the harddrive is like a big maze that confuses everyone.

 ::) You could make something like that using a batch file for christs sake, it isn't that hard. ::)
Chris Cromer

It's all fun and games until someone get's hurt then it's just fun. ;)

Pikachu14

  • Guest
Re:QfG1 remake's EGA640.DRV
« Reply #20 on: September 21, 2002, 07:31:02 AM »
Well you have 2 choices, either disasemble a driver and see what it does, or read some docs on ravi's site about the structure of it.
Going, going, gone...

Offline HWM

Re:QfG1 remake's EGA640.DRV
« Reply #21 on: September 21, 2002, 07:31:34 AM »
The only possible option I see, is that the FreeSCI team adds new graphic modes in their interpreter... Like ScummVM, that interpreter uses all kinds of graphic modes to (somewhat) boost the quality (in a higher resolution)... This technique is also used in par example ZSNES...

Pikachu14

  • Guest
Re:QfG1 remake's EGA640.DRV
« Reply #22 on: September 21, 2002, 07:44:44 AM »
Hmm...I can't find any info on Ravi's site, let alone FreeSCI's...

Edit: Nah, just looking in the wrong places. Ravi's NoSound Framework might work...if I can get a disassembled graphics driver to go with it...
« Last Edit: September 21, 2002, 08:20:07 AM by Pika wa Baka »

Offline Ravi

Re:QfG1 remake's EGA640.DRV
« Reply #23 on: September 21, 2002, 11:29:33 AM »
Sorry for jumping into this thread so late. I haven't been ignoring you folks, I just tend to read sound stuff more often since that's my particular area of expertise with SCI.

Creating a new graphics driver is certainly possible, and as people pointed out, I did it by disassembling Sierra's sound drivers and creating a new one in assembly.

I haven't looked too closely at graphics drivers, but the general scheme for all of Sierra's drivers is a little something like this:

Code: [Select]
; The driver is in some file on disk. The interpreter
; loads it into memory at the start of a segment.
; Whenever it needs to use the driver, it does a far
; call to the start of that segment. The first instruction
; in the driver, at the start of a segment, is a jmp to a
; driver interface function.

jmp DriverInterface

; Next, some identifying information
db 0             ; unknown purpose, possibly here for alignment
dd 0x876543210   ; identifies this file as a Sierra driver
db 0             ; identifies this as a display driver

db 7, 'namedrv'       ; pascal style string with the driver name
db 11, 'description'   ; pascal style string with driver description

; This is traditionally the driver data space.
; Remember that driver data lives in the code segment,
; so if you have a variable foo, reference it with cs:foo
; and not ds:foo.

; Next, a jump table to driver subfunctions. You'll have to
; figure out what each subfunction does by disassembling
; a Sierra driver.
dw Func0
dw Func2
dw Func4
; etc

; The DriverInterface function saves registers and uses
; the jump table to call the correct function. Register bp
; contains the subfunction number.

DriverInterface:
   pushf
   ; save registers except ax and cx, which return values
   call near word [cs:ExportTable+bp]
   ; restore saved registers (don't touch ax and cx)
   popf
   retf

; Implementation comes down here.

Func0:
   ; implement Func0
   retf

Func2:
   ; implement Func2
   retf

Func4:
   ; implement Func4
   retf

Pikachu14

  • Guest
Re:QfG1 remake's EGA640.DRV
« Reply #24 on: September 21, 2002, 12:28:35 PM »
Wow, thanks! Too bad that code doesn't cover graphics. It'd be much more helpful if it were truely a graphics driver...

Offline Te Rangi

Re:QfG1 remake's EGA640.DRV
« Reply #25 on: September 21, 2002, 05:21:11 PM »
O...K...


SMF 2.0.19 | SMF © 2021, Simple Machines
Simple Audio Video Embedder

Page created in 0.023 seconds with 17 queries.