RPGHacker / asar

(Now) official repository of the SNES assembler Asar, originally created by Alcaro
Other
195 stars 42 forks source link

org Label in freespace yields too small rats tags #273

Open Alcaro opened 1 year ago

Alcaro commented 1 year ago

\ !rb as -s freecode cleaned db 1,2,3 asdf: org asdf db 4,5,6,7,8,9,10,11,12,13,14,15 \ $80FFD7: 0A $908000: 53 54 41 52 02 00 FD FF 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

02 00 is the length, 3 bytes. The content is obviously much more than 3 bytes.

Easiest fix would be ban org Label to freespace and recommend pushpc.

Alcaro commented 1 year ago

Another one that shouldn't be allowed to point to freespace is autoclean Label. It's most likely a typo of autoclean JSL Label, and even if it isn't, it cannot possibly do anything useful.

randomdude999 commented 6 months ago

another thing i need to ban is fill/skip align in freespaces, even though i actually suggested that as a workaround in #143 lol

1.9 behavior: on pass 0, the freespace starts at $xx008000 and all aligns will be done with respect to that. say you have db fill 15 : fill align 16 as the contents. end of pass 0 its length is 16 bytes. in pass 1, the freespace is given a snespos immediately. say this happens to be $108012, now the fill align will go all the way until $108030 which is 14 bytes over the freespace's end.

2.0 behavior: the freespace starts at $000000 in both passes 0/1, at the end of pass 1 it's allocated and will just grow in pass 2 instead

simple fix: add a align=X option to freespaces to lock their own alignment to X, and either demand that its value is higher than any skip/fill align if the freespace, or automatically increase its value to the largest such one. downside: will waste a few bytes inside the freespace, when the freespace could start a few bytes later and leave some more space in the rom.

proper fix: ???????? it feels like any fix that tries to not waste that space involves either some annoying linear algebra or is equivalent to SAT