Jump to content
IGNORED

Zool RedetermiNed Project


Recommended Posts

Introduction:

 

After playing Zool RedimeNsioned on PS4, I wondered, could Zool on the Jaguar be tweaked a bit to make it (even) more fun?  

 

Here's what I came up with that could done for "quick" changes:

 

1) Swap out mod files, give it more of a Zool 1 feel that way.

2) Negate the jump by pushing up on the D-Pad.

3) Eliminate the need for 100% item collection.  Great for speed running.

 

Used the RNC uncompression utility, and currently pouring through all the files, finding the picture files, map, character, and other files using JagView.   At some point I hope to narrow down the program files.  

 

If I can't get it to pull up in some program editor, at least I'll know where it resides in the rom image and can try a few other tricks.  

 

Mods at this point were found, and I changed them out for the Zool 1 mods I found in the mod archive.   The results, unlike my tinkering with Bubsy which all worked, these mods varied in performance, which I thought was interesting.   Went something like this...

 

                                       Uncompressed     Compressed

Intro                                         191 k             164 k
Replace with: Acid                       32 k                23 k

Result:   Good!   Nice simple intro, had the "Get Ready" which I really enjoy.   Loved tht this worked.

 

Swan                                         90 k               57 k
Rock N’ Zool.                              60 k               44 k

Result: Good!   Rocking tune, better than the mellow Swan Lake tune, made it more palatable. 

 

bulb                                          60 k               37 k
Sonic Basher                              40 k               33 k

Result:   Plays slow.

 

Egypt                                        88 k               61 k
Sunset Mix                                 85 k              58 k

Result:   Plays slow.

 

snake                                        84 k               66 k
Sweetie Funk                             60 k               37 k

Result:  Plays slow.

 

ice                                            88 k               61 k
Zool Rave                                  59 k               41 k

Result:   Plays regular speed.

 

So if you want to try a version that had the better results (only intro and swan lake changed out) with the other music still in tact here are these images:

Zool2B.rom

Zool2B2.rom

 

And if you'd like to sample a curiousity, here is the one with all the tracks switched.

Zool2B5.rom

 

I'll keep tinkering and see if we can make the no jump and no item collection changes happen. 

 

1255571325_ScreenShot2023-06-10at6_29_25AM.thumb.png.dc3acfe0ca6bf9677db464d3d250b68f.png

 

UPDATE June 10, 2023 -

Version where UP is disabled on the D-Pad thanks mostly in part to Seedy1812:

 

DOWNLOAD HERE:

 

 

No odd jumps from the D-Pad anymore.   If you need to climb just hold down the jump button.   Climbs just as quick as D-Pad up.

Option menu used up and down on D-pad, but luckily if you hit down on D-pad it will cycle back to the top if you need.

Enjoy!

 

Edited by doctorclu
  • Like 4
Link to comment
Share on other sites

Hiya , well you are going to have fun as just like Bubsy the game code and data are unpacked into ram at boot up. Zool does not store filenames but gives each file a number and you load a file by index number. The table of start addresses for each file is at address 00802a00 to 00802c50.


I have added the disassembly of the start up code From address 00802094 loads in the data to $4000 (index 0x0 ) and the code (0x90) to 0x3a300 and then jumps into the code.
 

00802000   4ff9 0020 0000                   LEA       A_00200000,A7
00802006   203c 0080 20e0                   MOVE      #0x008020e0,D0
0080200C   c03c 00f8                        AND.B     #0x00f8,D0
00802010   4840                             SWAP      d0
00802012   23c0 00f0 0020                   MOVE      D0,A_00f00020
00802018   21fc 0080 20c8 0100              MOVE      #0x008020c8,A_0100.W
00802020   33fc 0003 00f0 00e0              MOVE.W    #0x0003,A_00f000e0
00802028   33fc 0003 00f0 00e2              MOVE.W    #0x0003,A_00f000e2
00802030   33fc 0000 00f0 0050              MOVE.W    #0x0000,A_00f00050
00802038   33fc 0000 00f0 0052              MOVE.W    #0x0000,A_00f00052
00802040   23fc 0007 0007 00f0 210c         MOVE      #0x00070007,A_00f0210c
0080204A   23fc 0007 0007 00f1 a10c         MOVE      #0x00070007,A_00f1a10c
00802054   23fc 0000 0008 00f0 2114         MOVE      #0x00000008,A_00f02114
0080205E   207c 0080 2260                   MOVE      #0x00802260,A0
00802064   203c 0080 29b0                   MOVE      #0x008029b0,D0
0080206A   7201                             MOVEQ     #0x1,D1
0080206C   7400                             MOVEQ     #0x0,D2
0080206E   4eb9 0080 2100                   JSR       A_00802100
00802074   40c0                             MOVE      SR,D0
00802076   0240 f8ff                        AND.W     #0xf8ff,D0
0080207A   46c0                             MOVE      D0,SR
0080207C   303c 0090                        MOVE.W    #0x0090,D0
00802080   e548                             LSL.W     #2,D0
00802082   247c 0080 2a00                   MOVE      #0x00802a00,A2
00802088   45f2 0000                        LEA       (D_00,A2,D0.W),A2
0080208C   205a                             MOVE      (A2)+,A0
0080208E   43f9 0003 a300                   LEA       A_0003a300,A1
00802094   7000                             MOVEQ     #0x0,D0
00802096   6100 0148                        BSR       B_8021e0
0080209A   6100 00c0                        BSR       B_80215c
0080209E   2052                             MOVE      (A2),A0
008020A0   43f8 4000                        LEA       A_4000.W,A1
008020A4   7000                             MOVEQ     #0x0,D0
008020A6   6100 0138                        BSR       B_8021e0
008020AA   6100 00b0                        BSR       B_80215c
008020AE   40c0                             MOVE      SR,D0
008020B0   807c 0700                        OR.W      #0x0700,D0
008020B4   46c0                             MOVE      D0,SR
008020B6   23fc 0000 0000 00f0 2100         MOVE      #0x00000000,A_00f02100
008020C0   41f9 0003 a300                   LEA       A_0003a300,A0
008020C6   4ed0                             JMP       (A0)
008020C8   33fc 0303 00f0 00e0              MOVE.W    #0x0303,A_00f000e0
008020D0   33fc 0000 00f0 00e2              MOVE.W    #0x0000,A_00f000e2
008020D8   4e73                             RTE






 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Hey Andrew, great to see you as usual!  :D

 

Yeh, no orderly file directory at the beginning of the rom like in Bubsy.  Matter of fact, where that one had a lot of the program files towards the beginning, the map files and other such in the middle, and music and voice samples toward the end, this one is quite different:

 

Graphics files at the beginning (at least that is the way the ripper found the RNC files) with an interesting cluster of files by world (mod file, followed by the map files, and other objects, and then another mod file and other related files to that next world and so on.)   I would imagine the program files are somewhere in a cluster for each world?   Still trying to narrow down to the program files.

 

The disassemly is really exciting to look over, if nothing to see the comparison of the hex values and the commands on the right hand side.

 

Seeing that "33fc" is hex for "move.w" for example, it is always cool when you can find a command in hex.   Or know what command to look for and search in hex.

 

Still new to 68K assembly and the wonderful disassembly above.   Anything you can say on how to pull up that information would be awesome.

  • Like 1
Link to comment
Share on other sites

About a quarter of the commands in the 68000 instruction set are move commands

68000 instructions can be broken down into groups . The basis of an instruction is a 16 bit word - more complex instructions will have extra words to be decoded.

 

Now for Move the top 2 bits are 0 , then the next 2 bits is the size ( 01= byte(8bit) , 10 = long(32 bit)  , 11 = word(16bit) )  This leaves 12 bits left which are split into destination and source. Each one of these is made up of 2 3 bit parts , the register and Mode.

The mode could be a Data register   , address register  , immediate value etc

 

some examples are

 

move.b d0,d2

move.l a0,a2

move.w (a1),d7

move.w 123,(a0)

move.w 123,(a0)++

 

Each one would have a different value

 

I would not image there be different program files for each world. In my previous post i told you how to find the program and dta files for the game

 

  • Like 1
Link to comment
Share on other sites

For the disassembly i can across dasm68k on the internet ( http://finitron.ca/Software/mc680xx.html ) and used a rom file .

As a rom starts at 00800000 i used

 

dasm68k /G00 /s800000 ROM_FILE  > OUTPUT_FILE

of if you unpack the program  which should be at 0x0003a300 then  you would set the start with /s0003a300
 

Edited by Seedy1812
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

I came across Propack tool somebody wrote  which will allow you to at least unpack a file form a rom image,

 

On https://www.romhacking.net/utilities/1310/ you can download the tool ( is a captcha thing you have to pass )

In the zip is rnc_lib.exe  - without any parameters you will see the help

 

rnc_lib.exe u Zool2.jag game.bin -i=11920c

this should be the game program, then convert to assembler
dasm68k /g00 /s3a300 game.bin > game.s

 

How i got 11920c  . As i Said the boot up code unpacks 2 files , index 0 and index 0x90. This is how it gets the address

 

0x00802a00 is an array of pointers into the ROM. Each entry in the array is 4 bytes so  to get the address is 0x00802a00 + ( 0x90 * 4). The Rom image starts at 0x00800000 , so this is 0x2a00+(0x90*4) = 0x2c40 the 4 bytes at this offset is 0091920c - again we have to subtract 0x00800000 . This gives 11920c

if you do the same for index 0 - the address is 0x00802a00 + ( 0  * 4) and its content is 00802f40   which would give a file offset of 2f40

 

0080207C   303c 0090                        MOVE.W    #0x0090,D0
00802080   e548                             LSL.W     #2,D0
00802082   247c 0080 2a00                   MOVE      #0x00802a00,A2
00802088   45f2 0000                        LEA       (D_00,A2,D0.W),A2
0080208C   205a                             MOVE      (A2)+,A0

 

Link to comment
Share on other sites

Oh this is good.   I was still enjoying the information shown about the table of start addresses hadn't had a chance to try this.    Will play with this more tonight.

 

And see if I can rustle up an example of Jaguar controller code to get an idea of what that looks like.

Link to comment
Share on other sites

Reading the controllers is a standard bit of code which Atari provided so Bubsy , Dinodudes , Raiden and Zool will follow. This is found in bubsy\specfic.jag\seedy\keypad.s

The fun thing is the controller port ( aka memory address ) does more than just read the keypads. Normally you write what what buttons on which controller you want to read - each read gets 6 buttons , to read all the buttons you have to do 4 reads but selecting a different collection of buttons.

A breakdown of what you have to write is

0x8000  = controller active
0x0100  = audio control - we set it this always but control the volume else where.
0x00ff = if a bit is cleared then then a collection of buttons is read .
 

You only clear one bit in the 0x00ff - this bit will control which controller (( 0 - 1 ) not Team Tap - just controller plugged into front ) ans which set of buttons to read

 

Controller 1             Controller2

0xfe    APRLDU            0x7f

0xfd    *741B              0xbf

0xfb     2580C             0xdf

0xf7     369#O            0xef

 

The functions in game are found at addresses

004a0e4 reads controller 1

004a160 reads controller 2

 

Edited by Seedy1812
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Ok this is going to be fun to check out after work.

 

You mentioned the team tap, does that require special coding, or do you code ports 1 and 2 standard and then had special coding from Atari for 3 and 4?

23 minutes ago, Seedy1812 said:

Reading the controllers is a standard bit of code which Atari provided so Bubsy , Dinodudes , Raiden and Zool will follow. This is found in bubsy\specfic.jag\seedy\keypad.s

As I've dove into Bubsy, Raiden a little bit, and now Zool been fun to see how Imagitec put these together.   May have to peek at Dinodudes sometime just for fun.

 

27 minutes ago, Seedy1812 said:

Controller 1             Controller2

0xfe    APRLDU            0x7f

0xfd    *741B              0xbf

0xfb     2580C             0xdf

0xf7     369#O            0xef

 

More hex values... mohahaha!!  :D   Really cool.   Again, can't wait to check this out more in a few hours.

 

Link to comment
Share on other sites

When the console got launched there was no Team Tap so the games were just written for the 2 controller ports. I would guess special code would have to be written to implement them There is no mention in the revision 8 of the documentation about them . I only had version 6 of the docs when writing Dinodudes. Version 10 of the docs does mention it

Edited by Seedy1812
  • Like 2
Link to comment
Share on other sites

So I got about as far as I could tonight.   Wine (on my Mac) is not loading dasm68.exe, and won't run in dosbox which I use for dos utilities like ProPack.

I have a older PC I will probably plug up for this very soon and run the disassembler.

 

In the meantime, using the hex 33fc to find the "move.w" command since move was said to be a common command, I did a search for that on unpacked (from propack) files that I established were not graphics, music, map, or whatever files.   Found three so far.

RNC00024.RNC RNC00097.RNC RNC00126.RNC

Link to comment
Share on other sites

4 hours ago, doctorclu said:

So I got about as far as I could tonight.   Wine (on my Mac) is not loading dasm68.exe, and won't run in dosbox which I use for dos utilities like ProPack.

I have a older PC I will probably plug up for this very soon and run the disassembler.

 

In the meantime, using the hex 33fc to find the "move.w" command since move was said to be a common command, I did a search for that on unpacked (from propack) files that I established were not graphics, music, map, or whatever files.   Found three so far.

RNC00024.RNC 114.95 kB · 0 downloads RNC00097.RNC 23.44 kB · 0 downloads RNC00126.RNC 112.45 kB · 0 downloads

126.rnc is the game.bin file which I explained in my previous post.

 

The other two are just data files , nothing much in them.

97.rnc is 99% full of 0's
24.rnc looks like data , maybe graphics or audio = when you see sequences 13,13,13,13,,14,14,13,13,13, .. 10,11,12,12,12,13,14,14,15,15,16,16,16,16,16,16,15,14

 

33fc is only one move command in at least 1 in 28,672 before extended addressing modes kick in ( the disassembly i provided had at least 7 different move instructions .. just looking for 1 chances are you will never find what you want )

Link to comment
Share on other sites

Zool 2 like Bubsy  reads the controller and converts that into a game controller

 

Bubsy has a byte controller

 

bits 

0->3 Dpad   RLDU

4,5,6 ABC
7  Pause

 

Now Zool does something similar @ 00049D66 the function read and packs the buttons. The bit of code for the Dpad is
 

00049DD6   4840                             SWAP      d0
00049DD8   c03c 00f0                        AND.B     #0x00f0,D0
00049DDC   e808                             LSR.B     #4,D0

 

So if want to "forget" the up button then we need to do

00049DD6   4840                             SWAP      d0
00049DD8   c03c 00e0                        AND.B     #0x00e0,D0
00049DDC   e808                             LSR.B     #4,D0

 

Thats the easy bit . Repacking the game.txt may cause a bigger packed file and then shuffling the files in the rom to fit would be fun and chances are it would be wrong.

The solution is to patch the rom. What it does basically is unpack a game.dta and the game.txt and finally jumps to the start of the game.

So instead of jumping straight into the game we jump to an unused part of the rom patch the unpacked game and then jump to the start of the game.
 

Edited by Seedy1812
Link to comment
Share on other sites

The code to patch the game would be

 

ROM_ROUTINE
   33fc 00e0 0004 9DDA              MOVE.W    #0x00e0,0x00049DDA
   41f9 0003 a300                   LEA       0003a300,A0
   4ed0                             JMP       (A0)

 

Now we need to change the boot up code to jump to the ROM_ROUTINE and not 0x0003a300

 

008020C0   41f9 0003 a300                   LEA       0x0003a300,A0
008020C6   4ed0                             JMP       (A0)

 

Link to comment
Share on other sites

Thanks for confirming 126 is the program file.   I was searching through these three to change the 99% items found to something much less (say 15%) for speedrunning.   Funny part was, this file only mentions 99 as in "copyright 1994".   Another file had four occurances of 99 in it, and the other file had like 30 occurances of "99".   Tinkered with changing those values, no noticable difference.  :P

 

But the changed and recompressed files in those cases were bit for bit of the original at least when re-added to the rom image, so far say that experience.

 

Appreciate the code patch idea because it's true what you say...

 

5 hours ago, Seedy1812 said:

Thats the easy bit . Repacking the game.txt may cause a bigger packed file and then shuffling the files in the rom to fit would be fun and chances are it would be wrong.

Just have to see how pro-pack handles a recompressed file with one bit change.   Sometimes it goes well, sometimes not.

 

As for this...

5 hours ago, Seedy1812 said:

Now Zool does something similar @ 00049D66 the function read and packs the buttons. The bit of code for the Dpad is

 

00049DD6   4840                             SWAP      d0
00049DD8   c03c 00f0                        AND.B     #0x00f0,D0
00049DDC   e808                             LSR.B     #4,D0

 

So if want to "forget" the up button then we need to do

00049DD6   4840                             SWAP      d0
00049DD8   c03c 00e0                        AND.B     #0x00e0,D0
00049DDC   e808                             LSR.B     #4,D0

 

Very cool, and not visible in the compacted rom but in the uncompacted file RNC126 file we get this...

 

88219736_ScreenShot2023-06-07at1_37_37PM.png.343d11ff0000701451a86c4171585e9a.png

So it's right there, the real question is, will this kill up on the D-Pad for just jumping, or would it also kill the up motion for climbing too?

 

Either way, could be fun to try in a few hours after work.  :D

Link to comment
Share on other sites

6 hours ago, Seedy1812 said:

The code to patch the game would be

 

ROM_ROUTINE
   33fc 00e0 0004 9DDA              MOVE.W    #0x00e0,0x00049DDA
   41f9 0003 a300                   LEA       0003a300,A0
   4ed0                             JMP       (A0)

 

Now we need to change the boot up code to jump to the ROM_ROUTINE and not 0x0003a300

 

008020C0   41f9 0003 a300                   LEA       0x0003a300,A0
008020C6   4ed0                             JMP       (A0)

 

Ah so deleting the move.w line to free up eight bits of space?   Not bad.  ;)

 

Edited by doctorclu
Link to comment
Share on other sites

What i said was leave the rnc file alone do not touch or change it. If you go about deleting bytes out of the code  you will make it crash . somethings are relative to other tings and others are set absolutely in memory So moving a function around and calling its old address will do different things and will 100% crash the game.

 

This code change would mean the DPAD UP would not work - so any menus requiring you to press UP would not work.

 

What we will do is patch the program after we have unpacked it but before we run the game

The 2 bytes at 0x49DDA need to be written with 0x00e0

 

Having not player the game i was unaware the up button has 2 functions.

 

So the game boots up say at 802000 and  this the code which starts the game up. Now if we find a bit of rom which is not being used ( has to be aligned to even bytes ) at address ROM_ROUTINE so we change this

 

008020C0   41f9 0003 a300                   LEA       0x0003a300,A0
008020C6   4ed0                             JMP       (A0)

 

so we jump to our patch code

 

008020C0   41f9 zzzz yyyy                   LEA       ROM_ROUTINE ( 0xzzzzyyyy) ,A0
008020C6   4ed0                             JMP       (A0)

 

This writes 2 bytes over the game and starts the game up

ROM_ROUTINE
   33fc 00e0 0004 9DDA              MOVE.W    #0x00e0,0x00049DDA
   41f9 0003 a300                   LEA       0003a300,A0
   4ed0                             JMP       (A0)

The routine as 2 parts

 

move 0x00e0 into 0x49dda

 

and then

 

let a0 = 0x3a300

jump to address the value of a0 ( 0x3a300 ) 

 

 

Edited by Seedy1812
Link to comment
Share on other sites

6 hours ago, Seedy1812 said:

...So moving a function around and calling its old address will do different things and will 100% crash the game.

Roger that.

6 hours ago, Seedy1812 said:

This code change would mean the DPAD UP would not work - so any menus requiring you to press UP would not work.

 

What we will do is patch the program after we have unpacked it but before we run the game

The 2 bytes at 0x49DDA need to be written with 0x00e0

 

Having not player the game i was unaware the up button has 2 functions.

Oh that's more than fine as you have the 68k know how.  :)   And I still want to try killing the up command... been itching to do that all day.

 

In this game the character's jumping ability is triggered by the A button OR pushing up on the controller.    This causes the player to jump around at the worst possible moment at times, and quite irratically.   So there have been quite a few Zool players over the years that wished the up direction was NOT another option for jumping.

 

But being able to climb up on walls would of course be nice.

 

Will try out the example code when I get home... geez long day.  LOL

 

6 hours ago, Seedy1812 said:

why would you look for 99 - is there only 100 items on a level ?

 

Probalby more than 100 items more than likely.  The player is required to collect 99% of the "tokens" or items before the player can advance to the next level.   Would be nice if that were considerably less.

 

Quite a few thought the earlier Zool games were better because they didn't have the item collecting requirement, and I agree.

Edited by doctorclu
  • Like 1
Link to comment
Share on other sites

If this disables the UP button for everything then we are on the right track

 

MOVE.W #0x00e0,0x00049DDA

 

What the following code does is takes the Dpad buttons from the Jaguar controller and take the 4 directions but moves them down to the bottom 4 bits , merges that with  ABC buttons and then stores that at memory location 0x4bb4 

 

00049DD8   c03c 00f0                        AND.B     #0x00f0,D0
00049DDC   e808                             LSR.B     #4,D0
00049DDE   8200                             OR.B      D0,D1
00049DE0   11c1 4bb4                        MOVE.B    D1,0x4bb4.W

 

Now bit 0 of 0x4bb4  contains the UP button.

 

00048920   0838 0000 4bb4                   BTST      #0,0x4bb4.W
000496F6   0838 0000 4bb4                   BTST      #0,0x4bb4.W
0005328C   0838 0000 4bb4                   BTST      #0,0x4bb4.W
0005342A   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00053590   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00053904   0838 0000 4bb4                   BTST      #0,0x4bb4.W
000539DC   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00053DE6   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00054344   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00054398   0838 0000 4bb4                   BTST      #0,0x4bb4.W
0005618C   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00056312   0838 0000 4bb4                   BTST      #0,0x4bb4.W


The instruction reads just its written  B Test - bit test. The zero flag is set if the bit is 0 , else the flag is cleared. 

 

This is checking if the button is pressed  (BranchEQual)

00048920   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00048926   6736                             BEQ       0x4895e

 

And this if it is not (BranchNotEqual )

0005328C   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00053292   6600 00a2                        BNE.L     0x53336

 

If the branch is within  +-127 bytes then instruction fits into 2 bytes else the range is +=32768 and fits into 4 bytes

 

Computers have a NOP instruction  which is "do nothing" / Nothing OPeration on a z80 this has a value of 0. 68000 its not 0 but 0x4e71

 

So to disable the branch you have to overwrite the branch instruction with NOP's . The whole instruction has to be overwritten by NOPs

 

00048920   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00048926   4e71                             NOP

 

 

0005328C   0838 0000 4bb4                   BTST      #0,0x4bb4.W
00053292   4e71                             NOP
00053292   4e71                             NOP

 

 

 

 

 

 

Link to comment
Share on other sites

44 minutes ago, Seedy1812 said:

Doing the hack to the rom I suggested yesterday . I have inverted the colours where changed the rom. I put my code over some text which should not be used in the boot up sequence.

 

The change i suggested did disable the UP key anywhere in the game.

 

This has been fun.   Been working to put in the NOP changes.   When recompresed though the file was bit for bit the same size the compressed file was about 8 bits bigger than the original compressed file I was pasting back into the rom.   Really wonder why propack sometimes does that, sometimes, not always, create a larger file through the source is the same size

 

So all that to say, will try this startup hack soon.   Good to know it cancelled the UP on the D-Pad.  Was that for the jump ability, or for climbing too?  :D

Link to comment
Share on other sites

13 minutes ago, doctorclu said:

This has been fun.   Been working to put in the NOP changes.   When recompresed though the file was bit for bit the same size the compressed file was about 8 bits bigger than the original compressed file I was pasting back into the rom.   Really wonder why propack sometimes does that, sometimes, not always, create a larger file through the source is the same size

Its not the size of the file which determines the packed size but the contents of the file.

 

At times it will look for a sequence of numbers  eg 20 bytes further along we have the same sequence of 10 bytes so it may write  offset size, offset , length.

 

Now offset size may have unique values eg

 

101   7 bit offset

1101  14 bit offset

11101  24 bit offset

111101 32 bit offset

 

and the we have the offset in however many bits we expect. So anything close by will take up less bits.

 

so changing

00049DD8   c03c 00f0                        AND.B     #0x00f0,D0

to

00049DD8   c03c 00e0                        AND.B     #0x00e0,D0

may mean its further away , so different offset and more bits to say where it can be found.. Hey presto a bigger compressed file

 

 

 

 

 

Edited by Seedy1812
  • Haha 1
Link to comment
Share on other sites

13 hours ago, doctorclu said:

 

 

Quite a few thought the earlier Zool games were better because they didn't have the item collecting requirement, and I agree.

Been years since I played either Zool or Zool 2, but found both rather flawed in what they were attempting to do. 

 

The first games layouts were far too dull, long and tedious.

 

It was something of a real chore knowing where you were supposed to end up. 

 

 

With the sequel,  making the player  collect floating trash along the way, some of it spilling out of the enemies you destroy and sometimes baby birds have ducks in them and they must be collected in large numbers, a task made far harder by the chaotic graphics choices. 

  • Like 2
Link to comment
Share on other sites

29 minutes ago, Seedy1812 said:

Its not the size of the file which determines the packed size but the contents of the file.

 

At times it will look for a sequence of numbers  eg 20 bytes further along we have the same sequence of 10 bytes so it may write  offset size, offset , length.

....

may mean its further away , so different offset and more bits to say where it can be found.. Hey presto a bigger compressed file

That is about what I suspected so there we go.  LOL!   Got more to play with later knowing that.

 

30 minutes ago, Lostdragon said:

Been years since I played either Zool or Zool 2, but found both rather flawed in what they were attempting to do. 

 

The first games layouts were far too dull, long and tedious.

 

It was something of a real chore knowing where you were supposed to end up. 

 

 

With the sequel,  making the player  collect floating trash along the way, some of it spilling out of the enemies you destroy and sometimes baby birds have ducks in them and they must be collected in large numbers, a task made far harder by the chaotic graphics choices. 

 

Ah yes, I do understand where you're coming from.  

 

After having played Zool I can see why there was a Zool2.

After having played Zool2 I can see why there was not a Zool3.

 

The layouts are something.   From my perspective, I've mastered Bubsy, and I enjoy a good 30 minute zip through that game about once a month.    I enjoyed Zool RedimeNsioned on the PS4, and got to thinking without that twitchy jump on the d-pad up position, and not needing to collect junk, would make a fun speedrunning game.

 

Layouts are still ... blah, but can they be mastered for a speedrun?   What I want to find out.

 

And wow, all these years with Amiga players and you'd think there would be recorded Zool 2 speedruns, but no!   Dannng...

https://www.speedrun.com/zool2?h=Any-Jaguar&x=02qpo8jd-jlz5w15l.81wdn4oq


 

 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...