Releases: DizTools/DiztinGUIsh
v2.5.1.0
v2.5.0.4
Add label XML export
- During assembly export, if you check the box for label metadata export in the Export Settings, it'll generate a new all-labels.xml file
sample output:
<Dictionary>
<!--
or (note "ns1:Label" which is a 'real' non-generated label).
'Key' is the SNES address of the label
-->
<Item Key="3178465">
<Value exs:type="ns1:Label" Name="savedata_num_times_game_booted" Comment="in SRAM, # times game booted" />
</Item>
<Item Key="8257575">
<Value exs:type="ns1:Label" Name="tmp_27" Comment="">
<ContextMappings>
<ns1:ContextMapping Context="Overworld" NameOverride="for_snes_bg1_vofset_b2" />
<ns1:ContextMapping Context="Battle" NameOverride="atb_counter" />
</ContextMappings>
</Value>
</Item>
<!--
or (note "ns1:TempLabel")
(also, ignore the flags)
-->
<Item Key="12628370">
<Value exs:type="ns1:TempLabel" Name="CODE_FN_C0B192" Comment="" Flags="None" />
</Item>
<Item Key="12583801">
<Value exs:type="ns1:TempLabel" Name="+" Comment="" Flags="None" />
</Item>
<Item Key="12592137">
<Value exs:type="ns1:TempLabel" Name="CODE_C02409" Comment="" Flags="DisallowPlusMinusGeneration" />
</Item>
<Item Key="16121857">
<Value exs:type="ns1:TempLabel" Name="DATA8_F60001" Comment="" Flags="None" />
</Item>
</Dictionary>v2.5.0.3
Minor bugfix release
- Allow importing even when ROM detect fails
- Escape characters in Project XML to allow saving busted ROMs with busted headers (thanks @RayCarrot / Diz discord crew)
v2.5.0.2
Regions - Export specific regions as separate files
Ever wanted to take a big chunk of data, table, or graphics and include it as a separate file? Now you can!
There are 2 methods:
Method 1
Define a region via Tools -> Region List. Give it a start/end SNES address and check "export as separate file"

An "incsrc" will be generated with the region name

And the data will be put in another file:

Method 2 (shortcut)
Simply mark regions up with comments: in comment field, add "!!is" on a label, and ""!!ie" to mark the start/end of a dynamic region

Incsrc directive will be added with label name as name of file:

Then, Diz will put the bytes in a separate file and "incsrc" them from the bank file.

Notes:
- This works for any type of assembly output (code/data/etc).
- labels/etc will be preserved
- This should make it easier to organize projects going forward
- should make it really easy to copy+paste output files and override them, for easier modding/etc
More new features
various UI improvements:
- shortcut key fix: change "Create label at IA" to non-conflicting CTRL+ALT+L (otherwise, was overlapping with ALT+L for "select long ptr for marking")
- improve "find next unreached search": jump to any boundary between unreached/reached sections, instead of only the actual unreached sections (useful for easier finding of unreached data/code)
- add better prompt/error msg UI (you can now copy+paste text and it's bigger, and it pops up better). More to come
- make lots of stuff show up in taskbar w/icon so Diz app doesn't just vanish during exports/saving
- add horizontal ruled lines to main grid in some situations like when we see a label or RTS/RTL
save files: (dumb but useful thing) sort labels before serializing output XML in Diz project files for easier git merging
- before, it would just add the latest labels towards the bottom, this keeps it sorted by SNES address
import new ROM: add custom rom header overrides for specific titles:
- Contra3 has a busted ROM SNES header and requires us to use custom detection overrides. sigh.
- maybe need to integrate this with existing DB's though Mesen2 has it wrong too :)
- we'll add more as we find them.
exporter: improve how we split lines in output assembly
- lines using multiple bytes (like 'db','dw',etc directives) will be split up if there is a comment mid-line
- fixes bug where some comments wouldn't show up
exporter: print #bytes in header section comment for regions
- note: this can be slightly different if regions fall across odd non-8-byte boundaries but, should be correct in most situations though
Bugfixin
- UI: improve error msg when app isn't happy with your config file for some reason, so at least you have a hint of what to do
- UI: savefiles: improve "warning: we'll upgrade this save file" text when importing an older save file ver#
- exporter: improve "ORG" directive generation (this was a mess)
- tracelog: fix old bug causing exception/failure when trying to overwrite existing tracelog labels with new ones
- export: disable single file mode support, for now (this has actually been broken for a long time)
Internals / Future stuff
Various improvements under the hood:
- add better IncSrc exporter. replaces weird hardcoded version with new version that respects formatting settings
- export: greatly rework/simplify/cleanup multiple output stream handling and a few other internals on assembly exporter module
- export: add better bank switch output file tracking
- increment save file format to v104, for region support
- regions UI: add better validation for start/end addresses
- regions UI: improve labels
- tests: improve various unit test junk
Cross-platform: early work towards Mono compatability on linux:
dependency cleanup: remove last IX library references
- used to use this but no longer
- closes PR #[TODO ???] (cherry-picked)
- thanks @YoshiRulz for the contribution!
v2.5.0.1
rom detection: add override for Contra3 settings - busted ROM SNES header requires us to have some custom detection code. sigh.
v2.5.0.0
Add "regions" editor
- Define a region as a start and end address, and a name
- Regions can apply certain properties to areas of the ROM, such as "label context"
Add "alternative label contexts"
- Ever had a situation where the same RAM address is used for two different things (like.. Main menu vs Overworld vs Battle vs Credits) ?
- Now you can assign a region to specific parts of the ROM, and assign a "label context" to that region
- Then, on a label that share the same address, you can define alternative names for the label that are assigned for particular contexts
Add better multiline label comment support
Export: Fix calculation of WRAM mirroring in certain situations
Couple other bugfixes
Note: This version of Diz upgrades the save file format from v102 to v103. Please backup your files / checkin your work before upgrading. If you need to downgrade, simply change the version back by hand to 102 and it -should- be OK after a re-save
v2.4.3.10
minor bugfix release
label mirroring: fix broken generated expressions for negative displacements
- we need to always print the abs value of the displacement offset, never negative
- printing negative would also result in a hex-formatted weird looking (and technically incorrect anyway) string
- thanks @bogaa for the repro
v2.4.3.9
main viewer:
- pointer tables in app now show addresses/labels of where they point
- add long-overdue and ridiculously useful keyboard shortcuts:
- CTRL+L to show labels list
- ALT+L to goto or add a label at the IA of the current instruction (great for labelling lots of ram QUICKLY)
labels list:
- greatly improve search speed
- improve copy+paste (don't copy the whole row, which was weird)
- allow space-seperated search terms, which are AND'ed together. includes >=, <=, <, > expressions, and "is:ram"
v2.4.3.8
export:
- autosaves the project first on each export
- makes it so you can press CTRL+E and see the git diff of both the project and exported asm
minor improvement to automatic label generation:
- TLDR: if you use an expression in an override, Diz won't generate the automatic label (which is like a false positive anyway, and preventing this is probably what you want)
- if Diz detects you're modifying the IA text to be an expression, it will now not generate a temp label at the destination
- useful to prevent phantom overzealous PTR_xxxx and DATA_xxxx labels, when all you really wanted to do was offset from an existing label
v2.4.3.7
Labels: New Label from IA improvements with mirroring
- Adding a label with "New Label from IA" button will un-mirror the label, if possible. (For instance, if you click that on a label with IA address of $0000FE from WRAM, it'll auto-convert that to $7E00FE for you)
- From here on out it's recommended that labels for ram addresses start with $7E/$7F. Diz should now handle the mirror much better in the past.
Label list: Normalize labels action
- Add new "Normalize WRAM Labels" button to Diz label editor menu. It'll go through and convert any of our labels that are referecing WRAM back to a normalized format of starting with $7E/$7F. If there are conflicts, it'll ignore them.
Housekeepin'
- Fix up "About" form and git version reporting (easier to tell what version you're on)
- Cleanup final release .zip file. Now only has the one .exe file, along with some optional docs. Easier to deal with.
- Rename final exe to DIZ.exe
- This will make installing new versions less annoying, and you can bundle Diz.exe with your projects if you like.
