Ripping charset

Basic and Machine Language

Moderator: Moderators

Post Reply
register
Vic 20 Newbie
Posts: 2
Joined: Sat Dec 26, 2015 2:55 am

Ripping charset

Post by register »

Hi forum,
can anybody suggest the easiest way to rip the multicor charset of a game? In particular I am interested in getting the sprites of demon attack.
Regards,
Reg
User avatar
AndyH
Vic 20 Afficionado
Posts: 364
Joined: Thu Jun 17, 2004 5:51 am
Website: https://www.hewco.uk
Location: UK
Occupation: Developer

Re: Ripping charset

Post by AndyH »

If you know the game is simply redefining the character set and using a regular character mode, you can examine the value in $9005 which will tell you where the programmer has placed their custom character set:

The addresses will be: $1000, $1400, $1800 or $1c00 based on the bits 3-0 in $9005 - 1100, 1101, 1110 or 1111 respectively.

Type the follow to save a region of memory to your local computer (assuming character memory starts at $1c00 and ends at $1e00, extend this end address if needed):

Code: Select all

s "charset.bin" 0 1c00 1e00
If the game is creating a bitmap from characters, then I guess the multi-colour data used to render on the character bitmap memory could be stored anywhere and you'd need to hunt around for them. Not sure if there are any tools that would help, not something I have much experience with on the Vic. I guess you could try adding watch points for the character memory to look for writes (store) to it and debug the code to work out what regions it is using when those breakpoint events are hit.

Code: Select all

Syntax: watch [load|store|exec] [address [address] [if <cond_expr>]]
Abbreviation: w

Set a watchpoint. If no address is given, the currently valid watch-
points are printed. If a single address is specified, set a watchpoint
for that address.  If two addresses are specified, set a watchpoint
for the memory locations between the two addresses.
`load|store|exec' is either `load', `store' or `exec' (or any combina-
tion of these) to specify on which operation the monitor breaks. If
not specified, the monitor breaks on `load' and `store'.
--
AndyH
HEWCO | Vic 20 blog
register
Vic 20 Newbie
Posts: 2
Joined: Sat Dec 26, 2015 2:55 am

Re: Ripping charset

Post by register »

In which emulator do I have to enter those commands?
User avatar
AndyH
Vic 20 Afficionado
Posts: 364
Joined: Thu Jun 17, 2004 5:51 am
Website: https://www.hewco.uk
Location: UK
Occupation: Developer

Re: Ripping charset

Post by AndyH »

This is with VICE, the monitor can be brought up with either ALT+M or I think it is ALT+H on newer versions. You should find it on the menu also.
--
AndyH
HEWCO | Vic 20 blog
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: Ripping charset

Post by Mike »

AndyH wrote:Not sure if there are any tools that would help, not something I have much experience with on the Vic.
A good tool is reading (parts of) the executable program into a display bitmap (like that of MINIGRAFIK). If the sprite definitions are stored there literally, it is quite easy to spot them by eye.
If the game is creating a bitmap from characters, then I guess the multi-colour data used to render on the character bitmap memory could be stored anywhere and you'd need to hunt around for them.
Demon Attack redefines most of the display also as screen bitmap, save for the logo at top, and the bottom ground below the cannon. The game draws the demons into the bitmap as hires objects. The demons are 'coloured' by the help of raster effects: inverse mode is used and the background colour is changed on every pixel line.
Post Reply