News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

Best pac-man

Started by DARKGATE, 17:23, 27 January 12

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DARKGATE

 :) This Pac-man is the best for AMSTRAD CPC, someone can convert in to .cdt for play on a CPC 464?
LOOK  ;D
Do not underestimate the power of AMSTRAD CPC.

tastefulmrship

#1
Here's a "working" .cdt of that Pacman game. (SPEED WRITE 1, tested on WinAPE2A18)


For future reference, there's a pretty good Windows file>.cdt program at GENESIS8 called 2cdt (with GUI).
Here's the download page for the file: http://genesis8.free.fr/frontend/emu-uti.php

It was originally written by arnoldemu and the GUI by Devilmarkus.



EDIT: Someone mentioned the new CPC-Wiki Zynaps and if that could be converted to .cdt. Well, yes, it can!
(attached)


(Ok, why doesn't my image-link work anymore? And I've just checked... none of my image-links work now! Great!)

Puresox

This is a great Pac-man game , It  looks very similar to the Atari 400/800 version, wondered if that is where it originated?

DARKGATE

Quote from: tastefulmrship on 18:43, 27 January 12
Here's a "working" .cdt of that Pacman game. (SPEED WRITE 1, tested on WinAPE2A18)


For future reference, there's a pretty good Windows file>.cdt program at GENESIS8 called 2cdt (with GUI).
Here's the download page for the file: http://genesis8.free.fr/frontend/emu-uti.php

It was originally written by arnoldemu and the GUI by Devilmarkus.



EDIT: Someone mentioned the new CPC-Wiki Zynaps and if that could be converted to .cdt. Well, yes, it can!
(attached)


(Ok, why doesn't my image-link work anymore? And I've just checked... none of my image-links work now! Great!)
:) Thank you, you are always very kind, I'm sorry to disturb, if I could understand how you did this conversion.
Unfortunately I can not do it, I use 2CDT to create my images, thanks for everything.
Do not underestimate the power of AMSTRAD CPC.

tastefulmrship

Quote from: DARKGATE on 20:27, 27 January 12
:) Thank you, you are always very kind, I'm sorry to disturb, if I could understand how you did this conversion.
Unfortunately I can not do it, I use 2CDT to create my images, thanks for everything.

All I did was...
downloaded 2CDTGUI.ZIP from GENESIS8.
Using EDIT DISC in WinAPE, I copied PACMAN.BIN to my usual work folder on my PC. (C:\)
Then, just used 2CDT(GUI) to create the .cdt file.

No CPCs were harmed in the creation of that file... infact, I don't even have a CPC! Everything I do is on PC via WinAPE.

DARKGATE

 :) I have tried and a lot of games i have converted into .cdt, but have problems with others, very soon i made a pack of games converted for work with CPC 464, but hope wich someone help me, with others, thank you.
A question, i have SORCERY tape, with turboload (terrible) but have the presentaction screen, i can convert it into block loading?
Thank you.
Do not underestimate the power of AMSTRAD CPC.

tastefulmrship

Quote from: DARKGATE on 12:59, 28 January 12
A question, i have SORCERY tape, with turboload (terrible) but have the presentaction screen, i can convert it into block loading?
Can you supply the Turboload .cdt file of Sorcery? If so, I can have a look for you.

DARKGATE

 :( this not is a  my dump, i have take it on CPC POWER.
http://www.cpc-power.com/index.php?page=detail&onglet=dsk&num=1988
My real tape use this loading system, but is very difficult for me convert in .CDT, who have made the conversion was GREAT.
Is possible convert into a basic loader with the presentation screen?
Use BASIC 1.0 for load the game.
;) Thank you.
Do not underestimate the power of AMSTRAD CPC.

MacDeath

#8
Nice PacMan in Mode0.

The sprites seem very crude, so I guess this can help them to be smooth and fast...
According to the ghosts with pills appearing in their eyes, it looks like 1bpp sprites with 1 ink used for the mask, and perhaps an "attribute colour" system to get those sprites with one different colour each.

i will have a look at this.


Sadly, those sprites could really have looked far better with a few antialiasing of shadows (highlight ?).

The sound is a bit annoying after longplay... but the original pacman's sounds are annoying too.


Post Edit :
Ok I checked with winape.

The guy actually aimed at a C64 port,obviously, this explains why the graphics are a bit simple.

The sprites are completely coded in Mode0.
So it is easily possible to edit them, I guess.

It seems there is a "mask" in mode 0 too, it can be "seen" when "find graphics" option is set to other mode than mode0 (mode1 in this case.).

But I could also find a mask in 1bpp (mode2 like) with the "Dead pacman cinematic and frightened ghosts.



BTW, the graphics could definately be upgraded easily and sweetly...
Of course the original pacMan was minimalistic too.

But as we have larger pixels, I suppose some extra colours wouldn't hurt the eyes.

The mode0 palette contains 3 whites and 4 blacks.
Got to see if those are like that on purpose or just not utilized and then free to be used..

but as there are some colour cycling effects, some doubles must be on purpose.



Also a proper Menu and intro page...


Getting the pills into a brighter Yellow instead of the same as pacman would also be a clever move as it would differanciate Pac from them.

tastefulmrship

#9
Quote from: DARKGATE on 14:12, 28 January 12
this not is a  my dump, i have take it on CPC POWER.
http://www.cpc-power.com/index.php?page=detail&onglet=dsk&num=1988
My real tape use this loading system, but is very difficult for me convert in .CDT, who have made the conversion was GREAT.
Is possible convert into a basic loader with the presentation screen?
Use BASIC 1.0 for load the game.
Err... ok... here goes! Here's a BlockLoad version of that FlashLoad version of SORCERY. It's uncompressed for now because I'm a little busy this weekend and the memory location of the game is annoyingly high (&AB00) which will require some juggling with BITBuster to get right!

Anyway, the .cdt is attached and has been tested on WinAPE2A18.



EDIT1: I will attach a compressed version to this post when done... hopefully later today or tomorrow evening.

EDIT2: Ok, here's a compressed BlockLoad version of that Sorcery build.

EDIT3: Ah... tested it on WinAPE's 464 & 6128 configurations and it "works" for both systems. (ie I managed to play the game, but I don't know if it's completable cos I was always crap at Sorcery)

DARKGATE

#10
 :o ........ :o :-X :blank: :o ???
:D Thank you.
The next week put a lot of games converted in .cdt for cpc 464, if someone is interested, i'not a programmer i made that wich is  possible, thank you for help.

P.S. have converted in to .cdt ACORN PACMAN, work well, is another good pacman clone.
Do not underestimate the power of AMSTRAD CPC.

tastefulmrship

#11
Quote from: DARKGATE on 21:23, 28 January 12
P.S. have converted in to .cdt ACORN PACMAN, work well, is another good pacman clone.
Yes, quite a nice PACMAN clone, and it uses a non-standard screen size as well as a version of the BBC character set! It's as close to a BBC Micro game as a non BBC Micro computer is going to get!

-------------------------------------------------
For future reference, here's a quick guide to converting non-standard loaders to block-loaders. I will use the SORCERY FLASHLOADER .cdt file as an example.

1. Create a blank .dsk file using either WinAPE, ManageDSK or your preferred .dsk management program. Format it to a standard CPC disc.
2. Using TRANSMAT, copy the "loader" file from the TAPE, again using your preferred emulator. I, personally, use WinAPE.
3. Reset your emulator and CAT the disc. TRANSMAT usually determines the file-type of the loader and will assign it the appropriate extension. In this case, .BAS.

4. Check the properties of the file. This shows that the START address is &0170, the usual address for BASIC files. In this instance, we can LOAD and LIST the file; in other cases you will need to MEMORY <START-1>:LOAD "FILE" then view the code in a disassembler.
5. The debugger window (press F7, then click on WRITE under MEMORY at the bottom-left to select the RAM) shows the BASIC code as the computer reads it... so we need to scroll through until we find the proper M/CODE.
6. At address &01F4 we can see the beginning of the M/CODE routine. All it does is move the whole routine down to &0064 then JPs to that location.
7. Now, we can put our first breakpoint at &0064 to trap the code and watch what it's doing. To do this, press GOTO ADDRESS, type in 0064. Then click on the left-hand margin against the 0064 address. The red-bar will appear to show you the breakpoint has been created.
8. RUN"SORCERY.BAS". WinAPE will now stop at the desired point; address &0064. We can see that the code is using HARDWARE to change the MODE, BORDER & INKs.
9. After that we have the header-load, then data-load routines. &008F-&009B loads the header which contains the START & LENGTH addresses of the data block. &009F-&00AB loads the data in. So, we can put breakpoints at &00A9 to trap the START & LENGTH addresses of each file, at &00AC to get the loaded DATA of each file and &00BA to trap the final EXECUTION address.

10. When you exit from the debugger, the first header will load. Once loaded, WinAPE breaks into the code again. We see that IX is set to &C000 and DE is set to &4000. This is our START & LENGTH addresses.
11. Letting the code continue, we see the screen being loaded.
12. Once complete, we have two choices. Either use a file-save routine to save the data from &C000-&FFFF or use the disassemble feature of WinAPE. Whichever you pick is entirely a personal choice. For reasons that will be apparent later, we'll go for the disassemble feature at this time.
13. Click on GOTO ADDRESS. Type in C000. Then highlight the data in disassembler window until you reach &FFFF. Right-click and select MARK AS DATA. Then right-click and select DISASSEMBLE. Click OK and the screen data will be saved to an assembler window (you will need to press F3 to see it). Right click in the Debugger window once more and select CLEAR DATA AREA.
14. To get the INK values, you could search through the code for the HARDWARE values, alternatively you can view them in the FIND GRAPHICS window of the debugger. You can see the palette table at the bottom of the screen.

15. Now, we can trap the START & LENGTH addresses of the main code, which is loaded in from the next header. The break shows the addresses as &05DC & &A524. This means the code will load above HIMEM, preventing a lot of external ROMs from working.
16. When loading has completed, we can see how much of the CPC memory has been used. In situations like this, you cannot use normal SAVE routines. Either manipulate the loader so it loads into a lower memory location (&0100 would be safe in this example) or use the WinAPE "disassemble trick" we used for the loading screen.
17. Click GOTO ADDRESS. Type in &05DC. Highlight the code until you get to &AAFF. Right-click and select MARK AS DATA. Then right-click and select DISASSEMBLE. Click OK and the main data will be saved to an assembler window. Right click on the debugger window and select CLEAR DATA AREA.
18. Now we can let the code continue to trap the EXECUTION address. Here, we can see HL is pointing to &05DC.
19. Allowing the code to continue shows that the game RUNs.

tastefulmrship

#12
Now that we have the two sets of data in assembler windows, all we need to do is transfer them into .bin files.

20. Firstly, we copy the screen data to file. Select the assembler window, click on FILE, then NEW. Copy/Paste the following code into the new window. (The code is a modified version of arnoldemu's filesave routine from the unofficial CPC resource website)

        org     &0070

        call    &bb18        ; Wait For Keypress; giving you time to
                             ; assemble the data dumps into memory.
        ld      b,End_Filename-Filename
        ld      hl,Filename
        ld      de,0
        call    &bc8c

        ld      hl,&c000    ; Start Address
        ld      de,&4000    ; File Length
        ld      bc,&0000    ; Excecution Address (&0000 = no execution)
        ld      a,&02        ; File Type (&02 = BINARY)
        call    &bc98
        call    &bc8f
        ret

.Filename       defb "SORCERY .SCR"
.End_Filename

21. Click on ASSEMBLE, then ASSEMBLE. Click on OK.
22. On the CPC window, type CALL &70.
23. Select the screen code assembler window (it will be the one that starts with org #c000) and click on ASSEMBLE, then ASSEMBLE. The screen data will appear on the screen when you press OK.
24. Now, press any key on the CPC window and the screen data will be saved.

25. Modify the file-save routine so it looks like this. You will notice that the START address is &0100 instead of &05DC. This is to ensure that the ROMs are not affected when loading the code.

        org     &0070

        call    &bb18        ; Wait For Keypress; giving you time to
                             ; assemble the data dumps into memory.
        ld      b,End_Filename-Filename
        ld      hl,Filename
        ld      de,0
        call    &bc8c

        ld      hl,&0100    ; Start Address
        ld      de,&a524    ; File Length
        ld      bc,&0000    ; Excecution Address (&0000 = no execution)
        ld      a,&02        ; File Type (&02 = BINARY)
        call    &bc98
        call    &bc8f
        ret

.Filename       defb "SORCERY .BIN"
.End_Filename

26. Click on ASSEMBLE, then ASSEMBLE. Click on OK.
27. On the CPC window, type CALL &70.
28. Because you've changed the start address in the file-save routine, you need to tell the assembler to assemble the data to the same address. Go into the second assembler window (which should start with org #05dc) and change the #05dc to #0100. If you add a nolist command to it, then it will speed up assembly.
29 Click on ASSEMBLE, then ASSEMBLE. You will not see anything appear in the assembly window, so press OK. Checking the FIND GRAPHICS window in the debugger will show the game code from &0100 onwards.
30. Now, press any key on the CPC window and the game data will be saved.

31. CAT the disc to see both files are present.
32. We can now test that the game files work. Open a new assembler window and copy/paste the following code. (It is a modified file-load routine from the Unofficial CPC Resource website)

        org    &0080

        xor     a
        call    &bc0e

        ld      bc,&0000
        call    &bc38

        ld      hl,Palette
        xor     a
.NextINK
        push    hl
        push    af
        ld      b,(hl)
        ld      c,b
        call    &bc32
        pop     af
        pop     hl
        inc     hl
        inc     a
        cp      &10
        jr      nz,NextINK

        ld      hl,Filename1
        ld      de,&c000
        ld      b,12
        call    &bc77
        ret     nc
        ld      hl,&c000
        call    &bc83
        call    &bc7a

        ld      hl,Filename2
        ld      de,&0100
        ld      b,12
        call    &bc77
        ret     nc
        ld      hl,&0100
        call    &bc83
        call    &bc7a

        di
        ld      hl,&a623
        ld      de,&aaff
        ld      bc,&a524
        lddr

        ld      bc,&0091
        push    bc
        jp      &05dc

.Filename1      defm    "SORCERY .SCR"
.Filename2      defm    "SORCERY .BIN"

.Palette    defb    00,24,15,06,20,26,05,17
            defb    18,10,03,09,25,02,13,12

33. Click on ASSEMBLE, then ASSEMBLE.
34. In the CPC window type CALL &80. The screen and game should now load and run.

From here you can create your own loader to work on TAPE or DISC, alternatively you can use a compressor to pack the files and speed up TAPE loading. I can go into this as well if you want, but there are differences of opinion as to which compressor is the best; again, it's personal taste. I like BITBuster, but most people here prefer Exomizer.


- A quick breakdown of the load-routine.
MODE 0
BORDER 0
Define INKs 0-15 from the .Palette data
LOAD"SORCERY.SCR",&C000
LOAD"SORCERY.BIN",&0100
Move data block &0100-&A623 to &05DC-&AAFF
JP to memory location &05DC


I hope this has helped you to understand how using a CPC emulator can make a job like this really easy!
- JTMS...

steve

@Tastefulmrship, If this information is not already in the wiki, then maybe you could put your guide in there as otherwise it will get lost among the thousands of other threads in this forum.
Thank you.

DARKGATE

TASTEFULRMSHIP  Thank you for your tutorial, i tried to made more conversions possible, if i have problems write here or on new thread. :)

Do not underestimate the power of AMSTRAD CPC.

Gryzor

Cheeky bastard, you split your tutorial to get twice the Likes :D

Powered by SMFPacks Menu Editor Mod