News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Ice Climber "Remastered" (100% Finished)  (Read 7656 times)

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Ice Climber "Remastered" (100% Finished)
« on: May 01, 2020, 01:45:24 am »
Hey friends!

EDIT: 04/05/20


FINISHED VERSION READY!

You can download it here




Just wanted to share progress on this new project, thanks to all the help from various people, (but specially SourMesen, Aclectico and MrKwong!) I now have learned a thing or two, and managed to add new animations for Popo (idle, running, etc) and enemies, background (tho, current is just a place holder and scrolling for it seems broken on this game, but dunno maybe I'm doing something wrong)

EDIT: Here are some moving pictures!



Here are some comparison pics (looks better in motion I swear!)



(Album with a couple extra pictures here)
https://imgur.com/a/hr5TR13

You can watch a video of it in action here

https://youtu.be/7qKE4liMGgc

I'll upload a patch once Nana is done too...I just wish there was some sort of UI that allowed you to easily map things/re-arrange tiles, but oh well, this is still vodoo magic SourMesen pulled out, imo it's great.

Does anyone know if you can "animate" backgrounds? say have multiple images and they alternate (like an animation)

Cheers!
« Last Edit: May 04, 2020, 06:08:48 pm by imkrut »

nesrocks

  • Hero Member
  • *****
  • Posts: 661
    • View Profile
    • nesrocks.com
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #1 on: May 01, 2020, 10:49:03 am »
Looks cool. A hint for youtube: pre-scale the video to 1080p before uploading because youtube's compression and real time scaling are not kind to 240p.

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #2 on: May 01, 2020, 12:20:54 pm »
Looks cool. A hint for youtube: pre-scale the video to 1080p before uploading because youtube's compression and real time scaling are not kind to 240p.

Thanks for the tip!
My internet is pretty bad tho, so I'll see how that goes.

Aclectico

  • Jr. Member
  • **
  • Posts: 66
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #3 on: May 01, 2020, 02:09:20 pm »
Quote
Does anyone know if you can "animate" backgrounds? say have multiple images and they alternate (like an animation)

You can animate a background much like what you recently completed with the water in your Donkey Kong Jr. pack. Below is an example of code that would be used in the hires.txt file for a title screen (although, you could change it to apply to a level). You would basically use the background conditions in conjunction with frameRange conditions. The "TitleScreenCheck" in the example below was also used to look for a tile unique to the title screen. If the game finds a tile in the position specified below, the condition is true. This is one possible way to distinguish backgrounds depending on the circumstance.

Keep in mind, the way things work in Mesen is that once it finds a match and replaces graphics for something based on conditions, it basically stops looking for that particular graphic. In other words, put your most restrictive conditions at the top of the hires.txt file and the least restrictive conditions lower.

#Title screen frame ranges
<condition>frame7,frameRange,60,52
<condition>frame6,frameRange,60,45
<condition>frame5,frameRange,60,37
<condition>frame4,frameRange,60,30
<condition>frame3,frameRange,60,22
<condition>frame2,frameRange,60,15
<condition>frame1,frameRange,60,7
<condition>frame0,frameRange,60,0

#Title screen animation
<condition>TitleScreenCheck,tileAtPosition,40,40,04D873244231383800D53CF0766F7714,36081A28
[TitleScreenCheck&frame7]<background>title8.png,1
[TitleScreenCheck&frame6]<background>title7.png,1
[TitleScreenCheck&frame5]<background>title6.png,1
[TitleScreenCheck&frame4]<background>title5.png,1
[TitleScreenCheck&frame3]<background>title4.png,1
[TitleScreenCheck&frame2]<background>title3.png,1
[TitleScreenCheck&frame1]<background>title2.png,1
[TitleScreenCheck&frame0]<background>title1.png,1

Also, it looks like things are coming along with this latest project. Have you considered lowering the color count for the background image to make it fit a "retro" look? If you are using Photoshop, you can achieve this by converting the image format to "RGB" (under "image", then "mode"), then switch it to "index," and under "Palette" you can select one of the "local" options. Then, you can experiment with changing the number listed in the color box to achieve the desired look. It will look more pixelated (and may have dithering depending on your settings), but that may fit the graphic style a little better. Below is a quick mockup that could use a little cleanup, but I think it helps with the general idea.



Celice

  • Hero Member
  • *****
  • Posts: 635
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #4 on: May 01, 2020, 04:35:56 pm »
I like the background myself. It reminds me of a GBA or Wonderswan remake.

Really cool work!

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #5 on: May 01, 2020, 06:16:35 pm »
You can animate a background much like what you recently completed with the water in your Donkey Kong Jr. pack. Below is an example of code that would be used in the hires.txt file for a title screen (although, you could change it to apply to a level). You would basically use the background conditions in conjunction with frameRange conditions. The "TitleScreenCheck" in the example below was also used to look for a tile unique to the title screen. If the game finds a tile in the position specified below, the condition is true. This is one possible way to distinguish backgrounds depending on the circumstance.

Keep in mind, the way things work in Mesen is that once it finds a match and replaces graphics for something based on conditions, it basically stops looking for that particular graphic. In other words, put your most restrictive conditions at the top of the hires.txt file and the least restrictive conditions lower.

#Title screen frame ranges
<condition>frame7,frameRange,60,52
<condition>frame6,frameRange,60,45
<condition>frame5,frameRange,60,37
<condition>frame4,frameRange,60,30
<condition>frame3,frameRange,60,22
<condition>frame2,frameRange,60,15
<condition>frame1,frameRange,60,7
<condition>frame0,frameRange,60,0

#Title screen animation
<condition>TitleScreenCheck,tileAtPosition,40,40,04D873244231383800D53CF0766F7714,36081A28
[TitleScreenCheck&frame7]<background>title8.png,1
[TitleScreenCheck&frame6]<background>title7.png,1
[TitleScreenCheck&frame5]<background>title6.png,1
[TitleScreenCheck&frame4]<background>title5.png,1
[TitleScreenCheck&frame3]<background>title4.png,1
[TitleScreenCheck&frame2]<background>title3.png,1
[TitleScreenCheck&frame1]<background>title2.png,1
[TitleScreenCheck&frame0]<background>title1.png,1

Also, it looks like things are coming along with this latest project. Have you considered lowering the color count for the background image to make it fit a "retro" look? If you are using Photoshop, you can achieve this by converting the image format to "RGB" (under "image", then "mode"), then switch it to "index," and under "Palette" you can select one of the "local" options. Then, you can experiment with changing the number listed in the color box to achieve the desired look. It will look more pixelated (and may have dithering depending on your settings), but that may fit the graphic style a little better. Below is a quick mockup that could use a little cleanup, but I think it helps with the general idea.



Aclectico! thank you so much for all your help! Yes, the background is just a placeholder for now (I wanted to have vertical parallax with different layers, but Ice Climbers does something weird with the scrolling at one point so it doesn't look good when you are about to reach the top), so yeah, a retro aesthetic is definitely in the works. Do you know if the reverse is possible at all? add a "foreground" layer? Would be cool to try and add a "snow effec" layer.

Aclectico

  • Jr. Member
  • **
  • Posts: 66
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #6 on: May 01, 2020, 08:17:41 pm »
Quote
Do you know if the reverse is possible at all? add a "foreground" layer? Would be cool to try and add a "snow effec" layer.

Sorry - I'm not aware of any functionality to add a foreground layer. But, all the possible uses for something like that would be interesting.

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber "Remastered" (in progress 60+% ?)
« Reply #7 on: May 02, 2020, 11:23:36 am »

Here's a progress gif!


Aclectico

  • Jr. Member
  • **
  • Posts: 66
    • View Profile
Re: Ice Climber "Remastered" (in progress 60+% ?)
« Reply #8 on: May 02, 2020, 03:02:31 pm »
That's an excellent idle stance animation! Nice job. Looks like you are putting the frameRange conditions to really good use  :beer:

Cloudiar

  • Jr. Member
  • **
  • Posts: 11
    • View Profile
Re: Ice Climber "Remastered" (in progress 60+% ?)
« Reply #9 on: May 02, 2020, 04:36:06 pm »
Oh man!!! AWESOME!!! I love this game  :laugh:

One question, for two players you think add camera fix???

This game have problems...not good, the camera forget the player that is down, this is a serious problem, should be later.

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber \"Remastered\" (in progress 60+% ?)
« Reply #10 on: May 02, 2020, 11:26:19 pm »

One question, for two players you think add camera fix???


Doubt that I can tackle that, sorry mate.

May 03, 2020, 12:16:28 am - (Auto Merged - Double Posts are not allowed before 7 days.)


https://youtu.be/yT79Ec4qodI

Latest update, still some graphics to finished but this is pretty close to done!

@Aclectico:

Oddly enough I tried your tip, and added animation to the background, however, by doing so, I got back to the previous problem of the "background" overlapping the enemy sprites in priority. I'm convinced this has something to do with how Ice Climbers is coded
« Last Edit: May 03, 2020, 12:16:29 am by imkrut »

Aclectico

  • Jr. Member
  • **
  • Posts: 66
    • View Profile
Re: Ice Climber "Remastered" (in progress 60+% ?)
« Reply #11 on: May 03, 2020, 08:25:17 am »
Quote
Oddly enough I tried your tip, and added animation to the background, however, by doing so, I got back to the previous problem of the "background" overlapping the enemy sprites in priority.

Do you have an example pic you can share? I couldn't notice anything in the latest .gif. Also, for the parallax scrolling issue, do you have an example of that as well? Does it glitch out when getting near the point of the level where the background is no longer black?

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber "Remastered" (100% Finished)
« Reply #12 on: May 04, 2020, 06:10:47 pm »
Added download patch to main post!!

@Aclectico: I don't actually, when I got into trouble I did like an hour troubleshooting and just decided to remove it and keep it simple.

SourMesen

  • Jr. Member
  • **
  • Posts: 28
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #13 on: May 06, 2020, 11:50:42 pm »
Do you know if the reverse is possible at all? add a "foreground" layer? Would be cool to try and add a "snow effec" layer.
So a bit more work later, I think I've got something that seems usable.  As it is, I'll have to retest all existing packs first before I can release it, since my change is not 100% backward compatible (although I don't believe the differences matter in any of the existing packs).

The idea is to change the "showBehindBackgroundPrioritySprites" flag for <background> tags and turn it into something more flexible.  Basically you would set a number to denote a "layer" or "priority" for the image.  "0" would be all the way back (equivalent to showBehindBackgroundPrioritySprites = Y), "1" would be in front of background-priority sprites, but behind the regular background (equivalent to showBehindBackgroundPrioritySprites = N), "2" would be between the background and the normal-priority sprites, and "3" would be above everything else.

Also, doubling up the number of those layers might allow for some more flexibility, e.g 0+1 = behind everything (0 is behind 1), 2+3 = in front of background-priority sprites but behind background (2 is behind 3), and so on with 4+5 and 6+7.  That should be good enough for the vast majority of scenarios, I think.

As far as I can tell, this doesn't seem to have much of an impact on performance, but I'll have to do some more testing to be sure, first.

kya

  • Jr. Member
  • **
  • Posts: 38
    • View Profile
Re: Ice Climber "Remastered" (100% Finished)
« Reply #14 on: May 07, 2020, 02:36:55 am »
@imkrut: I admire this pack very much! Thank you! Please, make more like this one!

@SourMesen: Am I getting you right: you are making Mesen display multiple backgrounds at once with different priorities?
If so, may I ask you to add more space between priorities. Like 0, 100, 200, 300, instead of 0, 1, 2, 3?
For example, in case someone would like to insert multiple backgrounds in front of bgpriority sprites, but behind the regular background, he will use the numbers between 100 and 200. This way he will directly specify which of those backgrounds should be rendered first.

Another exciting feature, in case multiple bgs are implemented, would be to tie the background offsets (introduced in 0.9.9) to specific locations in CPU or PPU memory (think OAM or scroll registers). Like this, for example:
<background>somebg.png,1,0,0,N,$FE,$FF



« Last Edit: May 07, 2020, 02:45:36 am by kya »

SourMesen

  • Jr. Member
  • **
  • Posts: 28
    • View Profile
Re: Ice Climber "Remastered" (100% Finished)
« Reply #15 on: May 07, 2020, 10:43:52 am »
@SourMesen: Am I getting you right: you are making Mesen display multiple backgrounds at once with different priorities?
If so, may I ask you to add more space between priorities. Like 0, 100, 200, 300, instead of 0, 1, 2, 3?
Yes - the reason I was suggesting to restrict it to 2 layers each (e.g 0 to 7) is for the sake of code complexity/performance. Like you know, these backgrounds require additional checks on every rendered pixel, so allowing a potential of 400 layers (and so having loop through a list of 100 of them for each 4 "layers") may hinder performance.  Is there really a reasonable scenario where 8 layers isn't enough?  This is already more layers than the SNES supports :p

Quote from: kya
Another exciting feature, in case multiple bgs are implemented, would be to tie the background offsets (introduced in 0.9.9) to specific locations in CPU or PPU memory (think OAM or scroll registers). Like this, for example:
<background>somebg.png,1,0,0,N,$FE,$FF
OAM/scroll registers are not really part of CPU/PPU memory, though. OAM has a mirror in CPU memory, though, so that might be sufficient.  Are the scroll registers not already taken care of via the scroll ratio options?

Beyond that, it should be possible to load from a CPU address, like conditions already let you do - just not too sure what syntax would distinguish between hardcoded values vs CPU addresses to load.

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #16 on: May 07, 2020, 11:26:48 pm »
So a bit more work later, I think I've got something that seems usable.  As it is, I'll have to retest all existing packs first before I can release it, since my change is not 100% backward compatible (although I don't believe the differences matter in any of the existing packs).

The idea is to change the "showBehindBackgroundPrioritySprites" flag for <background> tags and turn it into something more flexible.  Basically you would set a number to denote a "layer" or "priority" for the image.  "0" would be all the way back (equivalent to showBehindBackgroundPrioritySprites = Y), "1" would be in front of background-priority sprites, but behind the regular background (equivalent to showBehindBackgroundPrioritySprites = N), "2" would be between the background and the normal-priority sprites, and "3" would be above everything else.

Also, doubling up the number of those layers might allow for some more flexibility, e.g 0+1 = behind everything (0 is behind 1), 2+3 = in front of background-priority sprites but behind background (2 is behind 3), and so on with 4+5 and 6+7.  That should be good enough for the vast majority of scenarios, I think.

As far as I can tell, this doesn't seem to have much of an impact on performance, but I'll have to do some more testing to be sure, first.

Excellent! that's exactly what I had in mind!

Also I noticed in the example you showed that you had semi-transparency working too? or is that already included?

SourMesen

  • Jr. Member
  • **
  • Posts: 28
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #17 on: May 08, 2020, 08:30:56 pm »
Excellent! that's exactly what I had in mind!

Also I noticed in the example you showed that you had semi-transparency working too? or is that already included?
Technically, the transparency already worked, but there wasn't really a use for it, since the backgrounds were actually always in the background. :p

I've just committed a change on github that replaces the "show behind background sprites" Y/N flag with a 0 to 39 "priority" level for the background instead. The old "Y" is equivalent to 0 and the old "N" is equivalent to 10.  Foreground "backgrounds" use the 30 to 39 levels, and all backgrounds can use the PNG's alpha channel to get transparency effects, etc.  Only 1 background can be active at the same time per priority level, but that still means you can technically have 40 backgrounds active at the same time (although I'm sure performance will be pretty bad if you go that far :p)

These changes require that version "106" be set in the hires.txt file, and need the latest dev build of Mesen (you can grab it off of appveyor.)  Feel free to tinker with the new feature if you want, but keep in mind most people are not using dev builds and version 106 packs will not load on Mesen 0.9.9.

Artemis

  • Full Member
  • ***
  • Posts: 228
    • View Profile
Re: Ice Climber "Remastered" (100% Finished)
« Reply #18 on: May 08, 2020, 09:43:32 pm »
How about a Japanese version for those who want to clobber seals?

imkrut

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Ice Climber "Remastered" (in progress 50+% ?)
« Reply #19 on: May 08, 2020, 11:01:44 pm »
Technically, the transparency already worked, but there wasn't really a use for it, since the backgrounds were actually always in the background. :p

I've just committed a change on github that replaces the "show behind background sprites" Y/N flag with a 0 to 39 "priority" level for the background instead. The old "Y" is equivalent to 0 and the old "N" is equivalent to 10.  Foreground "backgrounds" use the 30 to 39 levels, and all backgrounds can use the PNG's alpha channel to get transparency effects, etc.  Only 1 background can be active at the same time per priority level, but that still means you can technically have 40 backgrounds active at the same time (although I'm sure performance will be pretty bad if you go that far :p)

These changes require that version "106" be set in the hires.txt file, and need the latest dev build of Mesen (you can grab it off of appveyor.)  Feel free to tinker with the new feature if you want, but keep in mind most people are not using dev builds and version 106 packs will not load on Mesen 0.9.9.

Will give it a go during the weekend! hopefully once 106 version is released, I can update the previous pack (and add a lil' something to em')

Do sprites also support alpha? (didn't notice) if that's the case, can be used for in-game shadows and stuff.
Also for next project want to try out using memoryCheck / ppuMemoryCheck....I'm thinking that I can use this to theoretically check if say, Player 1 is pressing the Left or Right D-Pad to change a sprite, am I correct in thinking that condition might work?

Thank you for all your work/help SourMesen!