Jump to content
IGNORED

Smurf Revisited


Captain Cozmos

Recommended Posts

We appreciate your hard work Captain. Smurf Rescue is in my opinion the most important game for the ColecoVision and I am happy you did such a thorough  job disassembling it. I bet a huge # of ColecoVisions were bought because of the Smurf cartridge.

Edited by OurVision
  • Sad 1
Link to comment
Share on other sites

3 hours ago, OurVision said:

We appreciate your hard work Captain. Smurf Rescue is in my opinion the most important game for the ColecoVision and I am happy you did such a thorough  job disassembling it. I bet a huge # of ColecoVisions were bought because of the Smurf cartridge.

I'm about to clean it up and release as is with the unlinked code as well as the PASCAL entry points.  This will be the official disassembly.  Same with the 20k prototype so you can study the differences.

I am also working on a version without the extra garbage that will be 100% transportable code.
Meaning that if you want to run it on a compatible system all you have to do is make a couple of modifications.

I may end up doing this with all of the Colecovision cannon games.

 

Playing Colecovision on the MSX is easy peasy....  Running MSX on the Colecovision, not so much.


Lets hope that it all stays home brew, hobby and free.

Edited by Captain Cozmos
Link to comment
Share on other sites

25 minutes ago, Tempest said:

Maybe I missed it, but what are the differences between the 20K and 16K versions?  I didn't think the 20K version had been dumped.  Or am I thinking of a different version?

Not very much vs. the final version. 

 

According to the above video, here are the notable differences the prototype had:

* The trees at the beginning and before you enter Gargamel's castle were not as clean-cut as the foliage was drawn a little rough while the trunks were darker.

* The BGM is more choppy and doesn't immediately end when your player dies (a la the 24K Donkey Kong that came with the ColecoVision itself).

* The scoreboard is a little different (three zeroes on start instead of two).

 

~Ben

Edited by ColecoFan1981
Link to comment
Share on other sites

18 minutes ago, ColecoFan1981 said:

Not very much vs. the final version. 

 

According to the above video, here are the notable differences the prototype had:

* The trees at the beginning and before you enter Gargamel's castle were not as clean-cut as the foliage was drawn a little rough while the trunks were darker.

* The BGM is more choppy and doesn't immediately end when your player dies (a la the 24K Donkey Kong that came with the ColecoVision itself).

* The scoreboard is a little different (three zeroes on start instead of two).

 

~Ben

I wonder if it strange bugs in it like the 24K Donkey Kong?

 

Was Smurfs a launch title?  It seems like Coleco was trying to get these games out the door as quickly as possible for the launch so they pushed out unoptimized late beta versions that were 'good enough' then optimized and fixed them up later.  I might be completely wrong, but that's what it looks like to me.

Link to comment
Share on other sites

4 minutes ago, Tempest said:

I wonder if it strange bugs in it like the 24K Donkey Kong?

 

Was Smurfs a launch title?  It seems like Coleco was trying to get these games out the door as quickly as possible for the launch so they pushed out unoptimized late beta versions that were 'good enough' then optimized and fixed them up later.  I might be completely wrong, but that's what it looks like to me.

Yes, correct.

 

And yes, Smurf Rescue was one of the original five games besides Donkey Kong to ship out upon the console's initial summer 1982 launch, the other three being Cosmic Avenger, Venture and Lady Bug.

 

~Ben

Edited by ColecoFan1981
Link to comment
Share on other sites

5 minutes ago, ColecoFan1981 said:

Yes, correct.

 

And yes, Smurf Rescue was one of the original five games besides Donkey Kong to ship out upon the console's initial summer 1982 launch, the other three being Cosmic Avenger, Venture and Lady Bug.

 

~Ben

Makes you wonder if there are 20K versions of the other three?

Link to comment
Share on other sites

52 minutes ago, Tempest said:

Maybe I missed it, but what are the differences between the 20K and 16K versions?  I didn't think the 20K version had been dumped.  Or am I thinking of a different version?

At a code level the differences are almost night and day.
It basically has the same outline but there are huge differences in the background tables.

If I had to make an educated guess, I would say that 100% of the resources were to make the Smurf character as good as could be for the time then gave it something to do.
Both the prototype and the release versions pretty much share the same routines and data.

As far as sprites and data, it takes up a lot of resources to make Smurf look like the cartoon which was the whole purpose anyway.
Everything else seems to be just an afterthought.  The background and music tables are slightly different despite doing the same thing.

 

Edited by Captain Cozmos
Link to comment
Share on other sites

  • 2 weeks later...

I am still working on this but now I have been identifying low level tables such as where obstacles are in the playfield.
I have identified all music and when it is called.

I have removed four of the seven pascal calls this thing uses.

I have optimized a couple of things and recovered a couple of bytes in the process but I have not changed game play one bit.

 

At the moment, I am tracking down and labeling all the ram usage.

 

My biggest challenge right now is if I want to change the timers,  It's not just INIT_TIMERP because in order to test my work I have to alter REQUEST_SIGNALP and TEST_SIGNALP

Also, the pascal timers use a fixed location in ram while if I create timers I have to find it some ram that Smurf is not using.  So that is changing 3 routines at once and if I get it wrong, debugging will be a nightmare.

The good news is that Smurf doesn't have that many timers so I may get lucky with this.
It also only uses 90 bytes of ram for the music and sound so I shouldn't have much of an issue at least finding the ram needed.

 

Anyway, back to work

 

03 Cosmos

Link to comment
Share on other sites

Quick proof of concept that I can change the music.

 

 

I also discovered that Smurf Rescue combines the main tune with an additional part for the hills background.
I can change the music for all stages of the game, including the rescue of Smurfette.

 

 

I also never realized that when you jump with an animal on the screen you can't hear the jump because of the limitations of the sound chip.

SMURF V5.ROM

 

This was a rough attempt that will take some practice so, if you try this rom at least rescue Smurfette once to get all the tunes.

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

3 hours ago, Captain Cozmos said:

Quick proof of concept that I can change the music.

 

 

I also discovered that Smurf Rescue combines the main tune with an additional part for the hills background.
I can change the music for all stages of the game, including the rescue of Smurfette.

 

 

I also never realized that when you jump with an animal on the screen you can't hear the jump because of the limitations of the sound chip.

SMURF V5.ROM 16 kB · 0 downloads

 

This was a rough attempt that will take some practice so, if you try this rom at least rescue Smurfette once to get all the tunes.

In the Atari 2600 release, the main Smurfs tune we heard in the cartoon series, and later in Smurf Paint 'n Play Workshop for the CV, was used after a skill level was selected (longer) and when you lost your last life (shorter). I am wondering if you could try to include the rendition from Paint 'n Play into the CV Smurf Rescue, for the same purpose?

 

Thank you,

 

 

 

Ben (ColecoFan1981)

Edited by ColecoFan1981
Link to comment
Share on other sites

56 minutes ago, ColecoFan1981 said:

In the Atari 2600 release, the main Smurfs tune we heard in the cartoon series, and later in Smurf Paint 'n Play Workshop for the CV, was used after a skill level was selected (longer) and when you lost your last life (shorter). I am wondering if you could try to include the rendition from Paint 'n Play into the CV Smurf Rescue, for the same purpose?

 

Thank you,

 

 

 

Ben (ColecoFan1981)

I have no doubts that I can.
At this point I am master of this rom and can change almost anything about it.

 

I do want your opinion though on the version I uploaded

Link to comment
Share on other sites

Leftover Code from early work?

    CALL    BEND_OVER
    LD      A, ($7299)
    ADD     A, 0D8H
    LD      ($7299), A
    CALL    SUB_A210
    ADD     A, 10H
    LD      ($729B), A
    LD      A, 0EH
    LD      ($7298), A
    LD      IX, SMURF_SPRITE
    CALL    PUTOBJ
    CALL    SUB_A22F
    LD      A, 7FH
    LD      ($7299), A
    LD      A, 0C1H
    LD      ($729B), A
    LD      IX, SMURF_SPRITE
    LD      A, 2
    LD      ($718C), A
    JP      PUTOBJ


This seemed to be a routine that is no longer used.  There were no links and I removed it while replacing it with NOP to maintain the rom size and structure.  The entire game plays through with no issues to include all levels.

It came directly after the Smurf dies and plays the death sound.

So far I have found at least 7 routines of unlinked code but this one was the largest so far.

Usually I can find these things when they involve something like JMP (HL) or JMP (IX) but in this case, absolutely nothing.

 

03 Cosmos

Edited by Captain Cozmos
Link to comment
Share on other sites

54 minutes ago, Captain Cozmos said:

Leftover Code from early work?

    CALL    BEND_OVER
    LD      A, ($7299)
    ADD     A, 0D8H
    LD      ($7299), A
    CALL    SUB_A210
    ADD     A, 10H
    LD      ($729B), A
    LD      A, 0EH
    LD      ($7298), A
    LD      IX, SMURF_SPRITE
    CALL    PUTOBJ
    CALL    SUB_A22F
    LD      A, 7FH
    LD      ($7299), A
    LD      A, 0C1H
    LD      ($729B), A
    LD      IX, SMURF_SPRITE
    LD      A, 2
    LD      ($718C), A
    JP      PUTOBJ


This seemed to be a routine that is no longer used.  There were no links and I removed it while replacing it with NOP to maintain the rom size and structure.  The entire game plays through with no issues to include all levels.

It came directly after the Smurf dies and plays the death sound.

So far I have found at least 7 routines of unlinked code but this one was the largest so far.

Usually I can find these things when they involve something like JMP (HL) or JMP (IX) but in this case, absolutely nothing.

 

03 Cosmos

Interesting.  I assume from the name it's an early version of the ducking motion.  I wonder what's different about it?

Link to comment
Share on other sites

8 hours ago, Captain Cozmos said:

I have no doubts that I can.
At this point I am master of this rom and can change almost anything about it.

 

I do want your opinion though on the version I uploaded

I think you did a good job here as it is, especially when you discovered some unused code.

 

~Ben

Link to comment
Share on other sites

Well, In order to find some memory I had to go through and find enough room to run a routine to clear out memory before everything else ran.
 

I was able to do it so not I am rewriting a small portion of the game to use standard timers and routines instead of pascal calls.
I have no choice at this point, the thing will not be transportable unless I do.

 

I am seeing by the download that only 3 people were interested in the sound hack so to those who missed it, I exchanged the rocky data from Rocky Boxing with a couple of tunes in Smurf.

I thought it was cute.
My thought process is to show that all these tunes in the Coleco library are transferable as long as you are using their format.
Meaning that we can come up with a complete library of tunes and sound effects to be used in future games.

BTW, I disassembled Rocky Boxing as well.

Maybe I can return the pause music that is in the ADAM music demo?  Was that a fan based thing or just never implemented?

 

O3 Cosmos

Link to comment
Share on other sites

I am almost done with this and I want to say that there are only so many times you can play Smurf Rescue before you start punching a wall.  But, I have stuck it out to finish the project.

I have remove 99% of the pascal routines and optimized even more stuff.

I have found one issue and this goes back to whomever patched Smurfette's dress in later versions, at least I think that is where the issue is.

They attached the pattern to the Spiders with no clear link, at the moment, to how it's implemented.  I will eventually find it but the notion that this is how they decided to fix things is just weird.  Maybe it fits in the grander scheme of the environment and was convenient rather than setting up a whole new table and trying to keep this within 16k.

 

 

The game does not have a clear NMI.  It uses timers within certain areas and disables the 9928 NMI with a write register call.  That is how I disable the NMI in most of my work.

If you see earlier versions, like a youtube video where a ghost image is creeping up the screen, that is most likely Smurfette's eye's and dress sprite.
I've come across this a lot in my time working on this and it comes from misaligned data which in those videos was probably an overdump or some deal.

Anyway, I hope to get this finished this week if not today.

 

O3 Cosmos
 

Edited by Captain Cozmos
Link to comment
Share on other sites

Here it is, the 100% Smurf Rescue Disassembly.
My newest Opus Magnum.

Most of everything is identified and labeled.
I have resolved all links, unless you discover one that I missed.
I have scrambled this software from here till Tuesday. (moved the routines, patterns, main and sub, all over the place) It assembles and works.
If you come across a problem then make sure you did not separate a routine.  A lot of these flow into each other.
Unless it is data with a link then only move routines which end with a RET, JR, JP.  You get the idea.

I do not expect this to be hacked and sold.  I spent a &&&& load of time on this for the history and community.

 

I returned all the pascal routines after I resolved how they are used, which I had to figure out.
There is no documentation I could find using the (p)ascal routines and they are certainly not in any book for sale or free.

 

They were mainly returned because I would have to rewrite a portion of the game for no compensation and, at the end of the day, it is better to present the source as close to the original from 40 years ago anyway.


Assemble with drag and drop on TNIASM or use the command prompt.  It is padded to 16k
 

There is a lot of optimization that could be done to this game if you want to give it a go.  Change some JP to JR's, take out the Pascal calls.

Being as all the links have been resolved, you should be able to change the data.  Even then you need to know what you are doing.
 

I did remove useless code that seemed to be leftover from earlier builds.  Thinking about it, I should have left it in for history sake but then I would have to track it down and return it or clean up a brand new disassembly for which I am already sick of looking at.  Sorry, but no....I am taking a break from Smurf Rescue and I do not want to hear that tune again for a long time.  At least a few weeks.

 

 

If you find issues then let me know so I can fix them quickly and release an updated source.


Anyway,  Here you go.  Enjoy.
 

 

 

 

 

Smurf Rescue v7.asm

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

On 10/20/2023 at 5:43 AM, ColecoFan1981 said:

In the Atari 2600 release, the main Smurfs tune we heard in the cartoon series, and later in Smurf Paint 'n Play Workshop for the CV, was used after a skill level was selected (longer) and when you lost your last life (shorter). I am wondering if you could try to include the rendition from Paint 'n Play into the CV Smurf Rescue, for the same purpose?

 

Thank you,

 

 

 

Ben (ColecoFan1981)

I did look into this.
The Paint and Play version is not a complete tune and is slightly off key.
I have no doubts that the whole tune can be replaced if someone knew what they were doing as far as the music goes.

  • 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...