Language…
6 users online: cletus_deletus,  Donut, masl, playagmes169, Skewer, toady - Guests: 228 - Bots: 336
Users: 64,795 (2,375 active)
Latest user: mathew

Retry System (+ Simple Multi-Midway) ver 2.06a

Yeah, it's not visually clear whether the lunar magic's asm is installed in your hack. I knew it was required for this patch, but I also misunderstood when it is actually installed; I thought it's installed when you just edit a level and save it (which is incorrect) and iirc one day I wrote something like you have to edit your level at least once to make the patch work. The correct(perhaps) detail of it is addressed in the readme now. :)

ver 2.05r3: https://bin.smwcentral.net/u/1250/retry_v2.05r3.zip

Changes:

- Fixed a bug that the layer 2 x position is not initialized properly in some special case. Huge thanks to NeXus15 for reporting this!

- I heard customized sram is not compatible with snes classic for some unknown reason, so I made it optional to install the default sram hack that saves midway states. (This, sram plus, or bwram plus was mandatory in v2.05r2)


Hopefully this is getting stable and will be submitted to the patch section.
Just came by again to state again how amazing the changes are.
I used ver 2.03 just for the multiple midpoints and ran into problems with midway points after continuing a save file. You SRAM feature solves this very nicely.
Currently configuring ver 2.05 for my sa-1 hack.
But I noticed you took out the possibility to set the echo for each level. Is there any reason besides restricting functionality to midway points? I liked the old format and am currently editing version 2.05 to use the echo feature again and might not immediatly notice if something breaks in the long term.

Edit:
Works like a charm, thanks again for this nice update!
My Youtube channel

Currently working on:
Project C

Finished project:
Midway points are closely related to where the retry menu respawns Mario. It's hard to separate them from this patch. However the echo feature, I believe you mean the code from the kldc baserom, has nothing to do with this. The reason why the echo ASM was included in the retry.asm was that they have a routine that should be called at some similar positions, so I just combined them into one because I was too lazy.

The echo asm could be inserted via uberASM. I quickly transferred it into an uberASM version. (Let me know if there's any problem with it.)
Code
; only use this when addmusick is isnerted

; copy paste the following code to gamemode 14
; then put `JSR Echo` somewhere in the main routine of gamemode 14

!addr = $0000
if read1($00FFD5) == $23
	!addr	= $6000
endif

Echo:
	LDA $13D3|!addr
	BNE .ret
	LDA $7FB000	; free ram address of addmusick
	CMP #$0A	; local songs
	BCS .normal
	CMP #$05	; star
	BEQ .special
	CMP #$06	; p-switch
	BNE .ret
.special
	LDA $0DDA|!addr
	CMP #$0A
	BCS .normal	; branches only when the main song played before star/p-switch music is normal
.ret
	RTS
.normal
	PHX
	LDX $010B|!addr	; per level basis
	LDA $010C|!addr
	BNE +
	LDA EchoTable,x
	BRA ++
+
	LDA EchoTable+$100,x
++
	BEQ +
	LDA $14
	AND #$01
	BNE +
	LDA #$06
	STA $1DFA|!addr
+
	PLX
	RTS



EchoTable:
	; adjust the path, or replace the line below with the table in your sfx_echo_settings.asm
	incsrc ../sfx_echo_settings.asm
hi good job
update 2.05 fix glitch castle entrance ?
It was fixed in version 2.04 which is newer than the one in the patch section. If you are using the version hosted on the site, yes.
I noticed that if I have the retry prompt with an HDMA gradient added on, when the level resets it still shows the HDMA gradient for a second. I saw that you fixed the layer 3 backgrounds disappearing in this patch so I figured I would mention that as well.
The reason of that happening is HDMA not turned off during screen transition. You may have the same problem when you move to another level via door, pipe, or something. It can be fixed by making it turned off when necessary. There is a patch doing this http://www.smwcentral.net/?p=section&a=details&id=12376ails&id=12376, but relies on unknown values at $7FFF00 which I believe is unused in most cases unless you have some other ASM related to it.

The code below is pretty much the same as that patch, but doesn't include that $7FFF00 part. This can be inserted with asar.

Code
;HDMA off

!addr	= $0000
!bank	= $800000
if read1($00FFD5) == $23
	sa1rom
	!addr	= $6000
	!bank	= $000000
endif

org $0081AA
autoclean JML HDMA_off

freecode
HDMA_off:
	LDA $0100|!addr
	CMP #$10
	BEQ +
	CMP #$11
	BEQ +
	CMP #$16
	BNE ++
+
	STZ $0D9F|!addr
++
	LDA #$80
	STA $2100
	JML $0081AF
Thanks for the reply! I didn't realize that patch already existed on smwcentral but it seemed to fix the problem I was having. #smw{:TUP:}
Originally posted by worldpeace
Midway points are closely related to where the retry menu respawns Mario. It's hard to separate them from this patch. However the echo feature, I believe you mean the code from the kldc baserom, has nothing to do with this. The reason why the echo ASM was included in the retry.asm was that they have a routine that should be called at some similar positions, so I just combined them into one because I was too lazy.

The echo asm could be inserted via uberASM. I quickly transferred it into an uberASM version. (Let me know if there's any problem with it.)

Yeah I meant that one.
Oh ok, I always wondered why it was included, this explains it.
Thanks for the code, but by that point I already merged your sfx code from the old version into the new version and I think I might keep it that way.
My Youtube channel

Currently working on:
Project C

Finished project:
Sorry to say but the ver 2.05r3 dont work with sa-1 1.27 version.
her the list from patchmanger

Hijack conflict with patch "sa1" at $008E5E (1 bytes)
Hijack conflict with patch "sa1" at $0091A7 (2 bytes)
Hijack conflict with patch "sa1" at $00A0CD (2 bytes)
Hijack conflict with patch "sa1" at $00A0D0 (2 bytes)
Hijack conflict with patch "sa1" at $00A0D3 (2 bytes)
Hijack conflict with patch "sa1" at $00A0D6 (2 bytes)
Hijack conflict with patch "sa1" at $00A0DB (2 bytes)
Hijack conflict with patch "sa1" at $00A0DE (2 bytes)
Hijack conflict with patch "sa1" at $00A0E1 (2 bytes)
Hijack conflict with patch "sa1" at $00A0E4 (2 bytes)
Hijack conflict with patch "sa1" at $00A262 (2 bytes)
Hijack conflict with patch "sa1" at $00A28B (2 bytes)
Hijack conflict with patch "sa1" at $00D0D9 (2 bytes)
Hijack conflict with patch "sa1" at $00F2EB (1 bytes)
Hijack conflict with patch "sa1" at $02A769 (2 bytes)
Hijack conflict with patch "sa1" at $048F75 (2 bytes)
Hijack conflict with patch "sa1" at $0491B9 (2 bytes)
Hijack conflict with patch "sa1" at $0491BC (2 bytes)
Hijack conflict with patch "sa1" at $0491C5 (2 bytes)
Hijack conflict with patch "sa1" at $0491CA (2 bytes)
Hijack conflict with patch "sa1" at $0491CD (2 bytes)
Hijack conflict with patch "sa1" at $0491D0 (2 bytes)
Hijack conflict with patch "sa1" at $0491D3 (2 bytes)
Hijack conflict with patch "sa1" at $0491D6 (2 bytes)
Hijack conflict with patch "sa1" at $0491D9 (2 bytes)
Hijack conflict with patch "sa1" at $05D7BE (2 bytes)
Hijack conflict with patch "sa1" at $05D7D5 (2 bytes)
Hijack conflict with patch "sa1" at $05D843 (2 bytes)
Hijack conflict with patch "sa1" at $05D9D8 (2 bytes)
Hijack conflict with patch "sa1" at $05D9DF (2 bytes)
Hijack conflict with patch "sa1" at $0DA418 (2 bytes)
Hijack conflict with patch "sa1" at $0DA691 (4 bytes)
Total of 32 conflicts found with patch "sa1"
That are the value that sa-1 used your patch is in the range
of the value like this one
$008E5E(sa1) // all is okay 1byte
$008E5B(retry) //4 bytes not okay
@obersteiner86, sorry for the late response. Those reports are quite predictable, since the SA-1 patch shifts RAM addresses substantially, and I believe many other patches would have a similar result. Also I guess it's not a good idea to include the SA-1 patch to the patchmanager, as SA-1 is supposed to be applied to kind of an unmodified ROM.


Anyways, here's one remarkable issue. If you make a BGM fade out in your level by the following code (assuming you are using AddmusicK),
Code
	LDA #$FF
	STA $1DFB

the music won't be reset when you die after it fades out. To resolve this, you'd want to append the code with `STA $0DDA`.
Code
	LDA #$FF
	STA $1DFB
	STA $0DDA

This information will be added to the readme in the next version.
I have problem with me dying and going in correct exit, but level loads upper part which means that im instantly dead. how to fix these exits? i would love to play kaizo hacks with working retry :D, im not hacker so i suck at patches
Emergently coping with some incompatibility issue with LM 3.00...

ver 2.06: https://bin.smwcentral.net/u/1250/retry_v2.06.zip

Changes in a nutshell:
1. compatible with Lunar Magic 3.00 (except for the redirect midway feature which can be done by custom midway bar supported by the system)
2. includes the "HDMA 3.5" patch by default which turns off HDMA during level transition (black screen)
3. supports the retry and checkpoint feature in the intro level (C5 or 1C5)
4. fixed a very rare glitch that happens under a combination of several conditions (thanks to Mellonpizza for reporting that)
5. (re)inserting this patch is prohibited if LM's 'Title Moves Recording ASM' is installed

Please check the readme file for detailed information.


e: I will submit this to the patch section if I don't see anything go wrong in few days.


Originally posted by Holy Shinx
I have problem with me dying and going in correct exit, but level loads upper part which means that im instantly dead. how to fix these exits? i would love to play kaizo hacks with working retry :D, im not hacker so i suck at patches

Maybe try turning on the option "Use separate settings for Midway Entrance" in any one of levels. It will silently install lunar magic's level entrance asm, which is required by this patch.
I just released it in the patch section after modifying some minor stuffs. The most recent version can be found in the link above or in the waiting patch section.

Changes:
- Added "retry_extra.asm" where you can put your code to be executed during level reset.
i only realized that im stupid and i need to add (use separate setting for midway enterances as i did, but i was stupid and didnt change the layer to good one), and thanks for updating this great mod
ver 2.06a: https://bin.smwcentral.net/u/1250/retry_v2.06a.zip

I kept forgetting to reset more RAM values including cape status. It's time to fix them before I forget again. I labeled it 2.06a this time since it's a minor change.

Changes:
- Resets more RAM values including cape status.
- Compatible with "Level Ender" custom sprite.
Originally posted by worldpeace
ver 2.06a: https://bin.smwcentral.net/u/1250/retry_v2.06a.zip

I kept forgetting to reset more RAM values including cape status. It's time to fix them before I forget again. I labeled it 2.06a this time since it's a minor change.

Changes:
- Resets more RAM values including cape status.
- Compatible with "Level Ender" custom sprite.


Does it reset the custom triggers? Those weren't working for me last time.
worldpeace,
I have one problem with this patch. I love the infinite lives, the no midway mushroom and the small Mario reset. But the retry system doesn't work. If you hit retry, then the screen glitches and goes black and the music loops. What did I do wrong?
Originally posted by Darkbloom
Does it reset the custom triggers? Those weren't working for me last time.

You mean your code in 'ResetExtra' doesn't seem to be run, right? First of all, please check if the routine is actually executed at all by using the example code setting the coin counter to 5. It's supposed to be reset when you select 'retry'.

If the routine is actually executed but it doesn't work as intended, maybe uberasm/sprite/etc codes are also executed in one frame right after the prompt is closed, and it changes the custom triggers after reset I guess? If that's the case, I can make the routine executed at another position.


Originally posted by Vatherai
worldpeace,
I have one problem with this patch. I love the infinite lives, the no midway mushroom and the small Mario reset. But the retry system doesn't work. If you hit retry, then the screen glitches and goes black and the music loops. What did I do wrong?

I can think of two possibilities.
1) RAM initialization was not done in the state for some reason, and as a result, the game tried to load a level that doesn't even exist in ROM (not one of 000-1FF). This could happen if you loaded the game data (SRAM or an old state with an emulator) which was saved before you inserted the patch.
2) Other patches or asm stuffs may be incompatible with this. Let me know patches and the version of lunar magic that you use.
The Retry System doesn't work with the new Lunar Magic "square" level formats: What retry does there instead is acting like a warp block, essentially warping you to Level 0 if no warp is designated on the kill screen or for example warping you to Level xyz because there was also a Pipe onscreen.

If that doesn't happen for anybody else: What could be the culprit of it?

Lunar Magic is on the newest version.(square levels)

Edit: From gamemode 0D on, so basically when the screen split into 00 and 0E on the first screen for example