Skip to content

Releases: DizTools/DiztinGUIsh

v2.5.1.0

07 Dec 17:06

Choose a tag to compare

vector table: Improve auto-detection, UI, and fix some minor bugs with vector table label generation when you first import a ROM.

v2.5.0.4

28 Nov 06:07

Choose a tag to compare

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

27 Nov 17:49

Choose a tag to compare

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

23 Oct 15:49

Choose a tag to compare

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"
image

An "incsrc" will be generated with the region name
image

And the data will be put in another file:
image

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
image

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

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

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

01 Sep 04:01

Choose a tag to compare

rom detection: add override for Contra3 settings

- busted ROM SNES header requires us to have some custom detection code. sigh.

v2.5.0.0

17 Aug 04:53

Choose a tag to compare

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

Example:
image

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

02 Aug 06:25

Choose a tag to compare

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

20 Jul 04:17

Choose a tag to compare

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

17 Jul 04:10

Choose a tag to compare

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

13 Jul 18:34

Choose a tag to compare

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.
image

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.
image

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.