|
|
||
![]() |
||
|
|
||
|
|
||
|
|
![]()
HACKING AROUND THE LAIR II - June 18, 1999
Written by Robert DiNapoli
INTRODUCTION
This information has been obtained by studying the Dragon's Lair II ROM image (Leland, USA). I haven't had time to disassemble the ROM code, so every byte might not be perfectly accurate.
MOVE / TIMING STRUCTURE
Moves and timing starts at location 0x53BE in the ROM image. (I'm not sure which version of the image I have.)
Structures are either 14 or 28 bytes long, as follows:
If the 3rd byte is 03, 04, or 06, the structure will be 14 bytes long.
If the 3rd byte is 00, 01, or 05, the structure will be 28 bytes long.
If the 3rd byte is 00, 01, or 05, use this table:
| Byte# | |
| 1 | Current level |
| 2 | Move # |
| 3 | 00 - First move of the level |
| 01 - Any other move on the level | |
| 05 - Last move on the level | |
| 4 | Correct move to continue |
| 01=up, 03=right, 05=down, 07=left, 0a=sword | |
| 5-6 | Starting frame for move |
| 7-8 | Ending frame for move |
| 9-10 | Frame on which to begin timing for move |
| 11-12 | Frame on which to end timing for move |
| 13-14 | Last frame to play before showing death scene (if incorrect move made) |
| 15 | Current level |
| 16 | Move # |
| 17 | 02 - unknown |
| 18 | 00 - unknown |
| 19-20 | Starting frame for death scene |
| 21-22 | Ending frame for death scene |
| 23-28 | 00 - unknown |
If the 3rd byte is 04, use this table:
This structure is used when a player can grab a treasure.
| Byte# | |
| 1 | Current level |
| 2 | Move # |
| 3 | 04 - treasure |
| 4 | Correct move to get treasure |
| 01=up, 03=right, 05=down, 07=left, 0a=sword | |
| 5-6 | Starting frame to grab treasure scene |
| 7-8 | Ending frame to grab treasure scene |
| 9-14 | 00 - unknown |
If the 3rd byte is 03, use this table:
This is used to show a different death scene if the player doesn't move.
| Byte# | |
| 1 | Current level |
| 2 | Move # |
| 3 | 03 - alternate move (or lack of a move) |
| 4 | 00 - if the player doesn't move, play the following death scene |
| 5-6 | Starting frame for death scene |
| 7-8 | Ending frame for death scene |
If the 3rd byte is 06, use this table:
This structure is used to tell the system that there is a new level.
After the player dies, he will be returned to this starting point.
| Byte# | |
| 1 | Current level |
| 2 | 00 - unknown |
| 3 | 06 - start of a new level |
| 4 | 00 - unknown |
| 5-6 | Starting frame of scene to play (Usually Dirk's resurrection) |
| 7-8 | Ending frame of scene to play |
| 9-14 | 00 - unknown |
Now, a very brief overview on programming the LDP-1450 character generation. (Thanks to Ruben Panossian for preliminary information on this!)
This assumes you have some experience sending general commands to the laserdisc player. The LDP-1450 supports a text display of up to 3 lines of 10 characters. Once again, this has been gleaned by studying the ROM output. If you have any additional information, please share it with us!
Send:
0x80 0x00 xpos ypos status - to set up the text display
xpos is the starting x position for display of the text.
ypos is the starting y position for display of the text.
status must be a bit field. I haven't been able to completely break it down yet. It controls the size of the font, how the font is displayed, whether the font has a border, etc. 0x51 and 0x30 produce nicely readable displays.0x81 - to turn on the user display
0x82 - to turn off the user display
0x80 0x01 0x00 text - to put text on the screen
Here's a quick example:
0x80 0x00 0x05 0x05 0x51 0x81 0x80 0x01 0x00 Hello (convert to ascii hex)
USAGE NOTE
You must wait for the status code return from the player after each byte. Sending bytes without waiting for the return code (0x0a) from the player will result in the player becoming thoroughly confused (and no text displayed, to boot!). You can soft-reset the player by sending: 0x82 0x56
DISCLAIMER
D-L-P.com is not responsible for any adverse effects resulting from your ROM hacking!
QUESTIONS? COMMENTS?
PROBLEMS?
Contact Us
HOME
| LASER GAMES |
LASER COMMUNITY
| TECH CENTER
This website was created by
Jeff Kinder
& Dave Hallock, 1997 - 2013.
All trademarks and copyrighted materials are property of their respective
owners.