Language…
21 users online: Aclais,  Ahrion, Batata Douce, Ekimnoid, Gamet2004, Golden Yoshi, Green, Hidincuzimsmokin, koffe190,  MarioFanGamer, masl, neidoodle, NewPointless, playagmes169,  Ringo, RZRider, schema_tuna, shaoshao, sinseiga, sugarfish456, TheXander - Guests: 269 - Bots: 257
Users: 64,795 (2,376 active)
Latest user: mathew

Lunar Magic suggestions and discussion (LM v3.40)

Tool

Originally posted by Aja
I know this isn't a very widely used feature, but if you use separate starting positions for Mario and Luigi, after loading a saved file, Luigi will be in the same position Mario was left into. I know this is how SMW handles it normally, but if you're using separate positions for both of them, then chances are you want each of them to keep their current position after loading a saved game.


Yeah, that could be useful as an option. Think I might add that.


On a somewhat related note... while doing a bit of idle checking to see if that might interfere with any 3rd party SRAM patches, I noticed the current SRAM Plus patch on the site is bugged. It eliminates the SRAM buffer, then goes and runs the same code meant for copying and preparing the buffer on the live values. Other than the silliness of copying the live values to themselves, that also causes the game to replace Luigi's live position on the overworld with Mario's whenever you pass a level that's going to bring up a save prompt. #ab{:P}

Originally posted by Ice Man
I was wondering if this was suggested before but we still lack overworld import/export feature.


You should read the list here first.

Originally posted by Ice Man
Overworld borders are, because they're part of the overworld, obviously. :P


Not exactly, just the settings are. The overworld layer 3 tilemap borders are saved as ExGFX files, so you'd transfer those along with your other graphics files. The overworld itself, layer 3 title screen, and layer 3 ending credits all have separate command line functions ("-TransferOverworld", "-TransferTitleScreen", "-TransferCredits"). And yes, they also have to be done separately if you're doing it from within LM.
Could a "Clear History" / "Edit History" or something along those lines be added under the Open a Recent File dropdown? I use this dropdown quite a lot, but combined with how often I tend to move around ROM locations, it can be annoying getting errors when I instinctively click on the button to shortcut over to a ROM that is no longer in the same place. If I could either delete or edit the history under the dropdown, I could definitely start using the button more actively. Very small suggestion, but it would add up.


Feature suggestion: a "text mode" for the credits editor, where you could set up a mapping of characters to 8x8 tiles and, while the mode is active, typing would enter those tiles starting at a position selected in the editor. Possibly with like, a size selector for also entering 8x16 characters like the original credits also has. Would make entering credits significantly faster since right now it involves constantly looking for and pasting each individual character.

Would be neat if that could be extended to text in levels as well (often made using layered layer 1 and 2 tiles, with every odd letter on layer 1 and every even one on layer 2), but that might be more difficult to implement cleanly, so the credits editor would probably be good enough to just have on its own.

Professional frame-by-frame time wizard. YouTube - Twitter - SMW Glitch List - SMW Randomizer
Originally posted by Sayuri
Could a "Clear History" / "Edit History" or something along those lines be added under the Open a Recent File dropdown?


May add a clear recent files command at some point.

Originally posted by Thomas
Feature suggestion: a "text mode" for the credits editor, where you could set up a mapping of characters to 8x8 tiles and, while the mode is active, typing would enter those tiles starting at a position selected in the editor. Possibly with like, a size selector for also entering 8x16 characters like the original credits also has. Would make entering credits significantly faster since right now it involves constantly looking for and pasting each individual character.


Will think about it. It's just the credits though so I'm not sure it's worth adding.

Originally posted by Thomas
Would be neat if that could be extended to text in levels as well (often made using layered layer 1 and 2 tiles, with every odd letter on layer 1 and every even one on layer 2), but that might be more difficult to implement cleanly, so the credits editor would probably be good enough to just have on its own.


I'd say that one is too specialized of a use case to put in LM.
Auto-Sa1

Auto adding sa-1
Check out my DKC rips!

I guess automatically patching the ROM with SA-1 via LM just like it automatically adds a useless 200 byte header.

I say, the hacker should decide themselves if they want SA-1 or not.
Originally posted by Souldbminer
Auto-Sa1

Auto adding sa-1


The issue with that is

first: A lot of hackers (specially kaizo hackers) dont use SA-1 because they try to keep the game as vanilla as possible.

second: SA-1 version of LM could be outdated compared with the latest version of SA-1.

third: SA-1 is not hard to install, the only difference between a regular patch and sa1, is that SA-1 must be inserted as first patch before do modifications in LM.

fourth: SA-1 has some options that can be enable or disable on the patch, if the patch is inserted automatically and without ask to the user, then you can't enable or disable the options that you want.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
Having an option to add sa-1 natively would be nice, however, because this is not a patch that is maintained by Fusoya asking for it to be added into LM is a tad out there since it could easily change before a new LM version is out. Also all the points anonimzwx pointed out are all pretty solid as to why it's better off being a stand alone patch.
How does item memory work in Lunar Magic 3? The routine at $00C00D, at least, doesn't seem to have been changed, but shouldn't a lot of things be different with the new screen settings? And aren't there some of them that would actually require more than 128 bytes? Is there a subroutine that I can JSL to get the correct item memory indexes, or should I keep using a custom one? If there aren't subroutines for such things, perhaps a couple should be added, since they're applicable to a variety of resources?

For reference, these are the routines that I currently have:

Code
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;
; item memory routines
; Input: $0A-$0B = X position, $0C-$0D = Y position
; Output: For the "check" routine, A will be 0 if the item memory bit is not set
; Used: A, $08-$0E
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CheckItemMemoryBit:
	PHX
	PHY
	JSR GetItemMemoryIndex
	AND $018000|!bank,x
	PLY
	PLX
	CMP #$00
	RTL

SetItemMemoryBit:
	PHX
	PHY
	JSR GetItemMemoryIndex
	ORA $018000|!bank,x
	STA ($08),y
	PLY
	PLX
	RTL

ItemMemoryIndexRt:
	LDA $5B
	LSR
	BCC .NotVertical
	PEI ($0A)
	REP #$20
	LDA $0C
	STA $0A
	PLA
	STA $0C
	SEP #$20
.NotVertical
	LDX $13BE
	LDA #$F8
	CLC
	ADC $0DA8AE|!bank,x
	STA $08
	LDA #$19
	ADC $0DA8B1|!bank,x
	STA $09
	LDA $0B
	ASL #2
	STA $0E
	LDA $0D
	BEQ .UpperSubscreen
	LDA $0E
	ORA #$02
	STA $0E
.UpperSubscreen
	LDA $0A
	AND #$80
	BEQ .LeftHalf
	LDA $0E
	ORA #$01
	STA $0E
.LeftHalf
	LDA $0A
	LSR #4
	AND #$07
	TAX
	LDY $0E
	LDA ($08),y
	RTS


----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by imamelia
How does item memory work in Lunar Magic 3?


It hasn't changed. Which isn't ideal the taller your level gets, so it should probably be adjusted at some point.
Originally posted by FuSoYa
It hasn't changed. Which isn't ideal the taller your level gets, so it should probably be adjusted at some point.

Yeah...it probably would be a good idea to fix that before it causes problems.

Incidentally, have you ever considered adding an HDMA editor? At least for background gradients? Or would that be outside the intended scope of Lunar Magic?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
I don't know if this has been suggested before. But scaling in the 8x8 Editor? Obviously 100% increments would be best since it's pixel editing.

I'm using the 8x8 tile editor for touch-ups after I import from GIMP... and the window size is making my eyes bleed (downside of a larger resolution monitor).

Additionally, I don't know how feasible non-square 16x16 Map Editor is, but the ability to shrink it on the Y-axis (not full-resize option) so that when you go to 400% you can still access the full scrollbar. (I don't even think I'd want this change I just noticed that if my mouse didn't have a wheel, like on a laptop, it would be counter-productive to work at those larger sizes)
Originally posted by imamelia
Incidentally, have you ever considered adding an HDMA editor? At least for background gradients? Or would that be outside the intended scope of Lunar Magic?


Not sure about scope, but haven't really thought about it much since I'm pretty sure we've already got lots of code and a few tools that people can use for doing HDMA stuff.

Originally posted by Runic_Rain
I don't know if this has been suggested before. But scaling in the 8x8 Editor? Obviously 100% increments would be best since it's pixel editing.


That's a really old, basic editor that I'm reluctant to make upgrades to, as it would make more sense to just replace it. Except we already have external tile editors that can serve that need, so...

Originally posted by Runic_Rain
I'm using the 8x8 tile editor for touch-ups after I import from GIMP... and the window size is making my eyes bleed (downside of a larger resolution monitor).


That sounds to me like your DPI setting may be well below what's appropriate for the physical size of your screen. The window does scale with system DPI, in 50% increments. You could always try bumping things up to 150%.

Originally posted by Runic_Rain
Additionally, I don't know how feasible non-square 16x16 Map Editor is, but the ability to shrink it on the Y-axis (not full-resize option) so that when you go to 400% you can still access the full scrollbar. (I don't even think I'd want this change I just noticed that if my mouse didn't have a wheel, like on a laptop, it would be counter-productive to work at those larger sizes)


I kind of prefer having a full page displayed for that though. Besides which, not everyone is stuck on 1080p. That level of zoom works fine on 1920x1200 (which is what I have, though I don't need more than 200% for the Map16 editor on this monitor), and some people have 2k or 4k displays.
Originally posted by FuSoYa
Originally posted by imamelia
Incidentally, have you ever considered adding an HDMA editor? At least for background gradients? Or would that be outside the intended scope of Lunar Magic?


Not sure about scope, but haven't really thought about it much since I'm pretty sure we've already got lots of code and a few tools that people can use for doing HDMA stuff.

There are indeed tools that already exist for generating HDMA tables and codes, but I guess the appeal of having a HDMA gradient editor within LM is that you could get a live update of how the gradient looks with respect to the background and level palette, without having to edit and re-insert the code, then enter the level in-game. Even if this editor didn't insert any code and just let you generate the tables and view the gradient as you tweak it, I think it would be a nice addition.
Yeah, that's kind of what I'm thinking. In particular, it would be useful to see how the gradient lines up with the background depending on the scroll settings. You can't do that in GradientTool.

Also, if we can't have custom object display, can we at least get object 2D not to show up as glitched tiles? It would be useful if it at least appeared as a square that would show the boundaries of each custom object and maybe the value of the first extension byte or even both of them, similar to what objects in EggVine look like. Maybe it could be different colors depending on the custom object number or something. The same could be true for extended objects 98-FF, making them simply display as a colored square with the object number on it.

Another thing: Could we have an option to turn off the tileset-specific behavior of Map16 pages 0 and 1 too? I, at least, barely even use tileset-specific objects or blocks (especially tiles C7-FF), and on the occasions when I do, I rarely need the same block or object to have different behaviors. Really, it would be nice to have a complete rewrite of how the game handles behavior of different blocks, making it use pointers instead of a huge messy if-else chain, but it would also probably be too much work for anyone who's not already familiar with the code.

Unrelatedly, what parts of $F0-$FF does Lunar Magic use? And are there any plans for it to use more of those addresses?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
A suggestion for the ExAnimation window.
Wouldn't it be easier to add a dropdown menu or box to input animation speed instead of adding more entries to the frames to slow down the animation?
I don't go looking in here often, so I don't know if this has been suggested multiple times in the past or not, but please, PLEASE, add buttons to automatically offset animation frames forwards or backwards, because doing it manually for each frame is incredibly tedious.

It's probably wishful thinking but this would save a lot of trouble for things like ExAnimated hurt blocks that only hurt on certain frames.
I play forum games and draw furries. I'm mostly active on Discord and Twitter.

Another custom object question: Could object 2C be parsed as another custom object, except with a variable length depending on the value of the first extension byte? It could have a pointer to a table like the one for sprites at $0EF30C.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by imamelia
Another thing: Could we have an option to turn off the tileset-specific behavior of Map16 pages 0 and 1 too? I, at least, barely even use tileset-specific objects or blocks (especially tiles C7-FF), and on the occasions when I do, I rarely need the same block or object to have different behaviors.


If you don't need them, then don't use them. You have 0x7E00 other free non-tileset specific tiles to choose from, after all. If you did want to use them that way, you could just override their behavior with custom block code and/or the "Act As" setting.

Originally posted by imamelia
Unrelatedly, what parts of $F0-$FF does Lunar Magic use? And are there any plans for it to use more of those addresses?


It's best to avoid that area, as there's no telling what future versions of LM might use there.

Originally posted by Ice Man
A suggestion for the ExAnimation window. Wouldn't it be easier to add a dropdown menu or box to input animation speed instead of adding more entries to the frames to slow down the animation?


An animation speed setting would apply to the whole animation, while just adding entries means you can have varying speeds at different parts of the animation.

Originally posted by LucasRCD
I don't go looking in here often, so I don't know if this has been suggested multiple times in the past or not, but please, PLEASE, add buttons to automatically offset animation frames forwards or backwards, because doing it manually for each frame is incredibly tedious.

It's probably wishful thinking but this would save a lot of trouble for things like ExAnimated hurt blocks that only hurt on certain frames.


You mean rotate the frame entry values backwards/forwards by 1? I think most people would just put the frames in the desired order to begin with (or modify the code for the blocks).

Originally posted by imamelia
Another custom object question: Could object 2C be parsed as another custom object, except with a variable length depending on the value of the first extension byte? It could have a pointer to a table like the one for sprites at $0EF30C.


Ehh, I'd generally prefer to preserve the remaining unused regular object codes in case they're needed one day, as there aren't many of them left.

Tool