Downloads

Operating systemDownload linkComments
Windows 64 bitDownloadVersion 0.11.4 (14.10.2020).
Extract and click on trse.exe. Configuration file will not be overwritten. Both TRSE and the OK64 should work right away.
macOSDownload Version 0.11.3 (29.09.2020)..
Please follow these instructions to avoid TRSE being flagged as quarantined:

  • unpack the trse_osx.tar.gz
  • use finder to move the trse.app and OK64.app to /Applications
  • do not start any of the applications yet, or they will be quarantined!
  • open terminal:
  • sudo xattr -r -d com.apple.quarantine /Applications/trse.app
  • sudo xattr -r -d com.apple.quarantine /Applications/OK64.app
Linux 64 bitDownloadVersion 0.11.4 (14.10.2020).
Extract and run trse.sh.

If you are experiencing trouble running the application, try re-installing the qt libraries as such:
sudo apt-get --reinstall install libqt5dbus5
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a libxcb-xinerama0
SourceGithub linkBuild latest version from scratch using Qt. Readme.md for instructions.
Older versionsLink to older releases of TRSEExcellent way to track TRSE improvements!

Check out the instructions for correctly setting up each of the systems in TRSE

Version 0.12 (target: ??)

  • Bugfixes
    • @ifdef / @endif can contain other @preprocessor commands (@include, @define etc)
    • Generic integer AND bugfix (if A>10 and A<100) failed for integers on the 6502
  • Systems / tutorials
    • Amstrad CPC 464
      • 5 tutorials
      • TRUs
    • 6 new C64 tutorials
    • 2 new m68K compression tutorials (for Atari ST + Amiga)
    • 2 new VIC20 bitmap image compression tutorials
  • Compiler
    • 6502 integer for loops support
    • *tons* of Z80 updates and bugfixes! Especially on the integer side…
    • Proper startblock / endblock error messages
    • LZ4 compression much better – turned up the compression level!
    • Comparator optimizations, generated assembly much faster / smaller
    • Signed integer, only “<” implemented yet.
    • Built-in compression/decompression system for the 6502/Z80/M68K + unpacking libraries + tutorials
    • In addition to system-wide TRUs, there are now processor-wide CPUs as well (i.e. compression library that is common for all 6502, m68k, z80 etc)
    • “@exporcompressed” command that packs and exports a charset-based image + c64 + vic20 tutorial
    • 6502 unsigned byte type + comparison!
      • i : unsigned byte;
      • if (i<0) then …
    • Code-breaking major update: TRSE has now become more strict by adding references (“#”, same as “&” in C), in order to remove ambiguities when assigning pointers. Previously, a user could assign a pointer “p := someData”, whereas you now need to type “p := #someData;” (which reads : p is assigned the address of somedata). The old ambiguity of stuff like “p := someData + i*40;” was solved by TRSE assuming that the first value is a reference while the “i” is a value, but will fail utterly in every other situation (like, switching the expressions around). Now, there can be no mistake in the programmers intent: p := #someData + i*40;  – p is assigned the *address* of someData plus the *value* of i mul 40. In most cases, you are simply required to add a single “#” in front of various procedure calls etc in your existing code in order to get it up-to-date.
    • Integer pointers : “pointer of integer” added. “var p1:pointer of integer;” and “p1[4] := $2000;” etc
    • Pointers can now be used in a Pascal-like fashion, but the old way is still supported:
      • pb : pointer; // regular old byte pointer
      • pb: pointer of byte ; same as “pointer”
      • pi : pointer of integer ; // integer pointer
      • pi : ^integer; // same as “pointer of integer”, Pascal standard syntax
      • pb : ^byte; // same as “pointer”, Pascal standard syntax
      • also, in order to comply with pascal standards, pb[0] can now be written as pb^. So, “pb^ := 10;” is exactly the same as typing pb[0] := 10, and complies with Pascal syntax standard.
    • *NOTE* potential code-breaking update: Constants in TRU files are now prefixed with [unit name]::, as the rest of the methods/variables. Remember to update your code! (i.e. “myConst” -> “MyUnit::myConst”
    • Z80 compiler drastically improved
    • 6502 more optimizations
    • 3 new type definition flags : “pure”, “pure_number” and “pure_variable” (pure is the same as pure_number + pure_variable). These do not do anything explicitly except preventing a user from misusing inline function parameters.
    • M68k “Compressed” type definition flag + compression + decompression system. Super convenient, easy to use! (Atari ST + Amiga)
    • “no_term” type definition flag will produce non-null terminated strings (i.e. “text : string no_term =(“HI THERE”); // non-null terminated)
    • @Macro definition preprocessor that uses javascript! Ah, the endless possibilities.. use Javascript to output TRSE code!
  • Editor/convenience
    • Memory analyzer overhaul. Also, you can now zoom (scroll button).
    • Hex editor can insert / delete bytes (delete / “i”-key)
    • Memory analyzer for Z80 systems.
    • Image importer can import generic bitmap fonts, and resize them to fit your needs
    • Rewritten entire image system to use “pens”. Lots of work.
    • Hybrid image editor fix
    • Front page redesigned, added some random simple 2D transformation shaders

Version 0.11 (27.07.2020)

  • Bugfixes
    • Integer arrays have had several bugfixes:
      • You can now declare unsigned arrays etc (having flags)
      • Integer arrays / generic expressions can be used in integer comparison
      • Unsigned integer comparison “<” implemented, but not the rest yet.
    • Mac image crash bugfixes
    • Last open file should be correctly remembered and opened on project load
    • incorrect numbers for strings in the TRSE settings are fixed (no more 3.234e-320 etc)
    • Toolbox moved to separate tab
    • Directory problems with exporting stuff on macos
    • Commander X16 compiler bug fixed, should work now
    • “New image” now includes all tabs, you don’t have to reload to be able to edit
    • Images load with full-screen by default, not in character mode
    • Fixed a huge bug where OrgAsm would fail to include binary files if your current path contains spaces (ie.e “c:\program files”).
    • Units can refer other units without problems & access all methods
    • Constants in units now work properly
    • Forward declaration of procedures with parameters bugfix
  • Tutorials
    • “New project” template for gameboy
    • Gameboy examples (6)
    • Gameboy full demo sample project (“yo-grl makes a Demo”)
    • ZX Spectrum tutorial
    • Tiki 100 tutorial
    • Atari 2600 tutorial
    • Atari 520 ST 5 tutorials
    • C64 music player sample project
    • C64 intro “Floskel” sample project
  • Compiler:
    • 6502 optimizations, significantly faster & smaller code
    • Post-processing optimizations – especially ldx – about 1% increase
    • Integer := integer + integer/byte optimization, much faster
    • M68K optimizations, much faster
    • Ctrl+R “main file” bugfix
    • Records now work properly in TRUs
    • Inline method parameter bugfixes
    • Functions implemented (see the TRSE syntax for info). Only returns byte or integer.
    • @ifdef or @if val = 10 @else @endif nested preprocessor directives
    • M68K compiler huge change: Arrays / pointer indexing is now corrected, so you don’t have to account for the “integer” size of integer/long arrays (i.e. you can type sine[i] instead of sine[2*i] for integer arrays)
    • Basically rewritten parts of the dispatcher to be generic. So much better!
    • Rewritten nested IF loops to work properly. Applies to *all* systems.
    • Basic Z80 support:
    • Tiki 100 preliminary support + 1 tutorial
    • ZX Spectrum preliminary support +1 tutorial
    • Atari 2600 preliminary support +1 tutorial
    • Gameboy support – GBZ80/8080 compiler
  • Editor/ convenient stuff:
    • You can now insert / delete bytes in the hex editor (“i” or “del”)
    • Z80 memory analyzer
    • Memory analyzer overhaul : better placement of text, zoom (use mouse scroll)
    • Hex editor for binary files (.bin + .prg)
    • Address list location on compile (6502 “orgasm” projects only, click “display address column” to toggle)
    •  Main project explorer rewritten, now includes library path and TRUs + colour syntax highlighting
    • Right-click on file to get help on type
    • All emulators can now have custom user-defined parameters
    • New TRSE front page and newly organized tutorials
    • Right-click on “recent list” to get a menu that allows for removal from the “recent list”
    • TRSE Settings emulator list has individual emulator recommendations.
    • TRSE Settings file is now moved to the OS Application dir (ie.e AppData/Roaming/TRSE/trse.ini on windows), no longer bound to application directory
    • “New file->TRU Unit file”
    • Ctrl+shift+B to build current file (if a “main” ras file is set). Useful for testing TRUs
    • F5 to run (together with CTRL+R)
    • Splitter on the left panels – for smaller screen resolutions, it is useful to remove the C64/current system logo etc.

Version 0.10 (26.04.2020)

  • Tutorials/Help
    • New Amiga 500 tutorials
    • VIC-20 bitmap tutorials
    • New C64 intermediate tutorial on procedure pointers
    • New C64 tutorial on Records
    • Updated tutorials to use records and Units (TRUs)
    • TRU tutorials
    • C64 Dual SID player / intro example project
    • OK64 demo “OK Computer” added as a sample project
  • Compiler:
    • tab : array[256] of byte = BuildTable(“i/16 + Math.sin(i/256*Math.pi)*32”); <- compile-time table generation
    • Inline procedures – macros in the flesh
    • Compiler produces intermediate output from parsing etc
    • F2 to lookup symbols
    • Symbol list tree + search function
    • Proper unused symbol removal (procedures, variables). Toggle in main ras window
    • Units : TRU unit support, both user-defined and internal units. See the corresponding tutorial project.
    • M68K compiler better optimized, much faster
    • New M68K methods
    • 6502 : Integer bugfix and speed optimization
    • Able to call pointers as procedures (without parameters): p1:=ProcedureToPointer( MyProcedure()); call(p1);. See new tutorial
    • Records and arrays of records
    • Parser memory leaks fixed
    • mos6502 “fillfast” implemented
    • c:=min(a,b) and c:=max(a,b) implemented
    • Stricter error messaging when using incorrect assigninment, variables, indices for variables that aren’t arrays

Version 0.09 (26.02.2020)

Changelog

  • Tutorials
    • New NES tutorials (todo)
    • OK64 tutorials
    • VIC20 bitmap tutorials
    • PET tutorials
    • X86 CGA tutorials
    • A couple of new C64 tutorials (big numbers, petscii animations etc)
    • Grave Intentions: a cross-platform adventure game work in progress tutorial project
  • Systems
    • OK64 support
    • OK64 emulator included natively
    • X86 8086 CGA compiler in alpha
    • VIC20 bitmap mode support + help + tutorials
    • NES overhaul, new tutorials
    • PET support
  • Compiler
    • Huge amount of new methods
    • String methods (compare, string split, to lower/upper etc)
    • Several internal optimizations, both pre and post
    • Repeat/until implemented
    • shr/shl/<</>>
    • xor
    • @export preprocessor for automatic exporting of data (images, levels etc)
  • Ray Tracer
    • More methods, lots of bugfixes
    • New tutorials (compression etc) (todo)
    • Help text
  • Image editor overhaul
    • Complete overhaul of entire image editoru
    • Lots of bugfixes, optimizations and improvement
    • Charset bug fixes + new dialog for quick access
    • NES CHR image support
    • NES Meta tile block support (create NxM tile blocks from 8×8 NES CHR data)
    • NES Level editor
    • Better color handling
    • PETSCII image import

Version 0.08 (13.09.2019)

Changelog

  • New tutorials
    • Lots of new & updated tutorials for the C64/VIC-20/Plus4
    • Ray tracer tutorials updated
    • Most other tutorials have been updated to fit the new standard of the language
    • Front page of TRSE contains easy access to tutorials
  • Compiler:
    • Cycles + error messages are properly displayed, also when using include files
    • Lots of bugfixes with pointer/integer addition + multiplication
    • Now suggests a similar procedure/variable whenever symbol cannot be found
    • AddBreakpoint() to add breakpoints
    • System preprocessor defines (#ifdef C64  …. #endif    #ifdef VIC20 … #endif)
    • Better 16 bit mul /div handling
    • Commodore Plus/4 support
    • TRUE / FALSE implemented.
    • NULL conditionals possible : if (m) then… (equals if (m<>false) or if (m<>1))
    • CASE implemented, also help text.
    • Compiler gives warnings about unused variables (soo useful)
    • 8 new & updated “easy tutorials”
    • Return values: Procedures can now return byte values, which can be used in evaluating expressions (e.g a:=MyMethod(b*c)*d);
    • myPointer:=ToPointer(hiValue + $04,00); // Creates a pointer from hi/lo bytes
  • Assembler
    • Now outputs debug symbols to VICE, which are automatically loaded on start. Easier monitoring etc.
  • Editor
    • Help dialog update (search now works)
  • Cycle numbers fix (todo)
  • More amiga stuff (for 0.09, probably)
  • Fjong:
    • Lots of new tutorials
    • Help text for most methods and constants
    • Search in editor
    • Syntax highlighting updated and works

Version 0.07 (08.08.2019)

Changelog

Color syntax: Planned, Implemented, Cancelled/postponed

  • Systems
    • Basic Commodore PET support (no specific methods yet)
    • Fledgeling Amiga 500 (Motorola 68K) support:
      • IDE / assembler
      • Basic 1-5 bitplanes image support (+export)
      • M68000  compiler support (40% implemented)
      • M68000 built-in methods support (15% implemented)
  • Fjong raytracer
    • New document type .fjo implemented. Fjong files are lua scripts that initialize an update a scene that is ray-traced realtime (CPU).
    • Fjong saving and compression for those sweet sweet 6502 demo effects
    • Fjong tutorials and examples
  • Compiler:
    • Getbit finally fixed
    • if (.. AND / OR ..) optimizations
    • Integer arrays, optimizations
    • VIC 20 methods
    • Tons of bugfixes and updates
    • Assembler .asm files can now be compiled directly
    • OrgAsm tests for duplicate symbols. Parser also double-checks for symbol duplicates.
    • Minor OrgAsm bugfixes
    • Multiple source files project build settings
    • memcpyfast (for <127 byte copying), memcpyunrolled for those fixed-size chunks
    • Motorola 68000 support
    • Possible to define variables / constants with expression array[320*200] of byte; also using preprocessor directives
    • Several optimizations and lesser bugfixes
    • Preprocessor method @startassembler ” lda #00″ etc lets you insert user-defined assembly code directly after program load address and before any TRSE code is executed.
    • Krills loader tinycrunch support: KrillLoadCompressed added
    • CopyFullScreen can take pointers or addresses or a mix
    • Zeropage pointers can now be assigned in a much better way:
      • zp:=zp+40;
      • zp:=$0400 + 40*y;
      • zp:=data + 80*y;
      • zp:=zp-40;
    • Integer & zeropage pointers simple assigning a:=a+/-b optimization
    • Fixed bug with bitand/bitor (&/|) not being treated as binary operations, so that expression as a:=1+b&3; became incorrect.
    • Changed 8×8 bit multiplication to *not* use self-modified code (due to NES only having prg ROM, not RAM)
    • Optimized expressions like “c:=a+b*2” to always be “c:=b*2+a”, enable even further binop optimizations where right-hand side of equation is simple number / variable. About 1-2% code reduction.
    • Added method RightBitShift(address, number of chars) for right-shifting N chars 1 bit (with carry)
  • IDE
    • Wavefront .obj 3D file to amiga format converter (under tools menu)
    • Amiga image type (320×200)
    • Pico 8 image type & colors
    • Custom palette + palette editor + export to 12-bit Amiga format
    • Bitmap Font Generator (load system truetype, render to image cells (for amiga font usage)). Located in the image “import” dialoge.
    • Export charset-compressed multicolor images as screen data + charset data.
    • Help text updated
    • While painting, press 0-9 to set colors, press shift+(0-9) for colors 10-19
    • Individual character is updated while drawing  charsets
    • TinyCrunch D64 settings and D64 implementation
    • Support for overriding default .prg settings:
      • Start address
      • Stripping .prg 2 byte header
      • No basic SYS start
    • Vice auto injection support. Duh.
    • Fixed a bug when creating a new animation document. Was fixed to 20×19 chars, now possible to have any size.
    • Tons of bugfixes in the image / level editor! (0.06.2)
  •  Tutorials:
    • Fjong tutorials
    • Entire Purple Planet Yo VIC-20 demo project source included
    • VIC20 Nibbler tutorial game project by Andy H.

Version 0.06 (17.01.2019)

  • NES support
    • First version of NES support.
    • Example NES project with 2 examples
  • Compiler
    • New built-in methods:
      • SetFrequency(SID_CHANNEL, freq); sets SID freq only
      • ShiftRight16x16(address) ; Shifts 2×2 chars 1 bit to the right
    • Automatic build of 16kb cartridge .crt files.
    • Using non-defined variables in built-in methods now yield proper errors
    • New optimization: Remove all expression of type “cmp #$00” . Typically reduces 1.5% of code.
    • Lots of other optimizations, both post and compile-time.
    • Automatic disk creation. Select project main program to compile & build automatically to disk, add additional files to disk.
    • Paw file used for defining .d64 file list.
    • Krills loader implementation. Just type “@use KrillsLoader $0200 $6E00 $5000” to use in your project! Supports PAL/NTSC
    • Vic20 & C64/128: “Fake sprite” handling. Copying 2×2 subset charset to 3×3 block of data etc.
    • Stable raster wedge system. Get stable rasters just the way you use regular rasters at almost no extra cost! Compensates for bad scanlines etc.
    • Simply write Nop( 3 ); to get 3 of those delicious nop’s in a row
    • Added OrgAsm assembly opcodes: txs, tsx, nop
    • Technical stuff: I’ve separated the abstract syntax tree from the compiler. These have up to now been tightly linked, but I wanted a hard separation from the AST and the type of processor that is compiled for. This is due to the fact that I might add support for other processors in the future.
    • It is now possible to change the default address for built-in initialization methods (random, irqs, maths etc) through a define : @define BuiltinMethodsLocation $3000. Useful on the VIC-20.
    • Fixed a bug where creating a new level doesn’t work anymore (due to a VIC-20 mixup)
  • VIC-20
    • Added support for mod2vic (modfile conversion and  playing of music files) with tutorial.
    • Native VIA IRQ timer methods (for playing music continuously, updating demo framework etc).
  • IDE
    • Image editor
      • Added support for importing C64 built-in character ROM (by just clicking a button)
      • Completely new Animation image type : Draw screens of petscii / whateve charset images, save as compressed movie and run in example program! Here running on the VIC-20
      • Bugfix: Charset didn’t show all 255 chars, stopped at $ef. Fixed.
      • ASCII/Petscii Animation : import .c image files
      • Dithering support (import etc)
  • Tutorials
    • C64 .d64 tutorial project with krill’s loader
    • Tutorial 27 (C64): Stable wedge rasters
    • Tutorial 5 (VIC-20): Animation example
    • Tutorial 6 (VIC-20): VIA interrupt raster example
    • Tutorial 7 (VIC-20): Smooth text scroller (software scrolling)
    • Tutorial project : VIC-20 Xmas demo “Vixmas”
    • Tutorial project : C64 “$4K Dreams” cracktro
    • Tutorial project : C64 Cracktro “$4K Dreams”
    • Tutorial 8 (VIC-20): Twister

Version 0.05 Beta (01. 11. 2018, snapshots builds here)

 

  • Now supports rudimentary Vic-20!
    • Vic 20 emulator location
    • Vic 20 first tutorials
    • Vic 20 still lacks lots of the built-in methods that are available for the C64 (sprites, clearscreen, raster interrupt methods etc)
    • Vic 20 tutorials
    • Vic 20 bitmap images + tutorial
  • Rudimentary C128 support
    • A couple of 40-line tutorials with the goold ol’ VIC
    • Some damned 80-column methods for printing text and colour (see above images), including a simple 80-column example
  • OrgAsm:  the new internal assembler. Our very own original assembler, naturally called “OrgAsm“, can be used instead of DASM. All tutorials, current productions etc have been tested and works, but there might still be some bugs out there… so don’t delete your dasm quite yet
  • Exomizer works on C128 and the VIC-20.
  • Compiler
    • ScreenOff / ScreenOn sometimes crashes rasters. Always set bit 7 to 0 now.
    • Sqrt (16 bit) works like a charm!
    • atan2 method
    • log_2 table
    • Optimize (remove) unused variables and procedures (with a warning)
    • Move all zeropage stuff to project settings (instead of global)
    • @Startblock / endblock preprocessor for code as well (and shows in memory analyzer)
    • Both joystick ports support: Joystick(1) and Joystick(2) (instead of only joystick())
    • Internal built-in methods system has been completely rewritten, and uses a tidy list of methods/compatibility/parameter types instead of hard-coded stuff.
    • All tutorials have been updated to use these automated compiler requirements (all parameters are automatically type checked, you cannot write $4000 when you meant ^$4000 anymore, so the compiler is more strict)
    • Preprocessor defines are now more robust, and can contain similar names (like myVar, myVariable, myVar2)
    • Koala image file import/export
    • New help system: All help doc is generated through the new compiler system. Still gotta write individual help for each procedure though. Progress about 10%.
    • Preprocessor “@ignoremethod <methodname>” implemented. Just plainly overrides and ignores including assembly file methods. Useful for Vic20 like not including stuff that you actually don’t need: say you never used 16 bit division, then typing @ignoremethod “init16x8div” will save you a couple of bytes.
    • Include assembly files now compiled as resource, no more “remember to copy this file into this folder” etc
    • Added new post-optimizer that bumps post-optimization to about 2%.
    • Detailed post-optimization settings under “project settings”
    • Temporary variables used in compiler operations are now first chosen from a pool of pre-defined zero pages. If these are empty, regular temporary variables are used. Pool of temp zeropages can be defined in the project settings, default 4 are provided.
    • Optimizer: Parser automatically removes procedures that are never called/used.
  • IDE
    • Completely rewritten the sprite editor
    • Fixed charset selection bug. ugly one. Selecting regular charsets should work just fine now.
    • Fixed crash on trying to build on “recent projects” tab
    • TRSE settings file moved from application folder to user home folder ~/.TRSE/ on linux/os x
    • Rewritten entire document image handler – no more threads – faster response time & fewer crashes
    • VIC-20 bitmap image support (with user-defined width/height)
    • Find File Dialog (ctrl+s) for rapid opening stuff! Nice
    • Exomizer hide footprint (blinking @) in settings
    • “System” settings in project settings (C64, C128, VIC20, NES)
    • Zeropage settings for screenmemory and decrunch, also new internal 4 zeropages for math functions etc (for speed)
    • “# Cycles” text color customization
    • CTRL+T for user-specific command
    • Project settings (as opposed to global settings)
    • Image koala import/export
    • Lots of new optimization settings in the project settings dialog
    • Sprite/charset WSAD stop at x=0 or y=0 (or minmax)
    • Memory analyzer scales with window resize
    • Fix 1×1 editing blocks bug in multicolor mode (not done)
    • Memory analyzer analyzes .prg for zeropage use and checks whether any SID music overlaps with code blocks (in case of zeropage crashing)
    • All changed documents (Images, Ras) will ask for confirmation when closing (save: yes, no, cancel close)
    • Image overhaul: New tab Export/Import, automatically remove tabs that are not used in this context (like “Data” and “Levels” tab on anything but the level editor), text and buttons are tailored to the current image type (so no “flip horizontal”, “2×2 char” on level editor or multicolor image editor, but is on on sprite and charset images)
    • New dank code editor syntax highlighter theme “October
  • Tutorials
    • Reorganizing tutorial folders based on system
    • Some C128 tutorials (8, to be exact). Includes two 80-column examples.
    • DemoMaker: Full tutorial project on how to create a demo with centralized automated scene picker etc
    • DemoMaker online tutorials
    • Vic-20 tutorials
    • C64 tutorial 24: Screen Clearer (demo effect)
    • C64 tutorial 25: 16 x 16 sprite scroller
    • C64 tutorial: 8×2 sprite logo

Older versions:

Version 0.04.2 Beta (02.10.18)

  • IDE
    • Rotate image / sprite / charsets. Very simple, goes all trashy if you apply the rotation several times, definitely a non-commutative transformation. Just like Deluxe Paint 2!
    • Charsets can export colors, and level editors support charset-based color selection (halving the size of the levels)
    • Bugfixes in image editor, rewritten the whole grid-thingy
    • Fixed huuuge thread-related bug that sometimes crashes image tabs, especially on linux. Damn threading and the Qt UI library. Actually, it’s probably just me that is a bad baaad coder.
    • Press “C” to set default clear character $20 in the level editor
    • Toggle multicolor/hires charset/sprites in editor
    • Memory analyzer font size can be specified under settings/general
    • Level editor can load both .bin and now .flf files (character sets)
    • Level editor character set now remembered for individual levels in project
    • Data header text displayed for each individual level in project
    • Resize level data does not shift data but keeps block in place.
    • Level editor custom data header text editor
    • Compiler now gives a severe warning if you use memcpy, clearscreen, copy functions etc trying to write to a memory position that is within the code block.
    • Support for changing IDE colors of cycles&background, linenumber & background and current line.
    • Added support for two main window color themes in the settings dialog: dark and light
    • Updated documentation (F1). Should be done more properly, but no time until next release!
    • There’s a button in the image editor that opens a dialog window with shortcut help text (keyboard commands etc, how to zoom/pan images)
    • Fixed yet another kind of bug that crashes the application when image windows are closed
  • Documents
    • New kind of TRSE document: Paw files. Paw files (PAcked whaaat) are simple resource files for automated packing of data. Say that you have a project with 10 binary files (images, level data etc), so you need to compress the data in order to be able to include everything. So every time you change some of these level/image files while developing, you will have to manually calculate where to insert them in your code based on their file size. No more ! With Paw files packed resource manager, all you need to do is create a list of project data that you want to pack at a certain memory posision, specify their decrunching address and just compile.
    • In the example above, 2 images (data+colour) are packed and automatically included at memory position $D000, ready to be uncrunched at their desired address! Include file with memory positions is automatically generated.
    • Example of automatically packed data (levels, images, colour data etc at $D000 and $9900)
  • Compiler
    • Added new memory copy function blockmemcpy(from, to, # blocks) where #blocks implies the number of 256- byte blocks. So in order to copy a $800 byte charset you can type blockmemcpy($8800, $4800, 8); Note: these values must be pure numbers, pointers don’t work. Also, the # blocks number must be pure numeric (patch 0.04.01)
    • New built-in methods: ScreenOff() and ScreenOn(), turning off/on screen while decrunching etc
    • Fixed spriteloc to support constant x values
    • New preprocessor for variables (and perhaps code as well), @startblock $F000 and @endblock to manually locate code/data within block at a memory position
    • Previously, there were jumps before and after procedure declarations. Basically, too many jumps between chains when initializing. Removed all procedure jumps, only 1 in the start of the program that goes to the main code block. about 1% code reduction,
    • New method: SetCharacterLocation( [memory address]); for ease-of use (basically changes $D018). If you have included a character set at $2000, then simply type SetCharacterLocation($2000);
    • Since the introduction of the paw packed system, there is also support for decrunching resources not based only on name – but also on index. Say you have paw-packed and included 10 images, and in the paw settings specified the address variable to be “myPackedAddresses”. You can now use decrunchfromindex(myPackedAddress,i) where i is the index of the resource you wish to unpack! Handy for multiple-image storage etc.
    • Fixed integer constants. You can now say x:=2+5 where x is an integer.
    • Damn found a huuge integer bug where myInt := 256 – i; where i=1 turned out to be 767.. hopefully fixed
    • Integer temp var optimizations + fewer instructions. But in a future version, I seriously need to rewrite and optimize integer operations. Seriously.
    • printdecimal(number, # of decimals). Prints either an integer / byte at the current screen coordinates (used by moveto). Example: printdecimal( a, 3) where a is an integer will display 4 digits. printdecimal(i, 2) where is a byte displays 3 decimals.
  • Tutorials
    • Working on a new game, but source will not be published before the game is completed. Level selections, scrolling levels, main map, conversations, loot etc.
    • Whole new tutorial project: Introduction to TRSE game development! Source code and resources are included in the TRSE framework.
    • Small tutorial game tutorial
    • Paw packer decrunch tutorial 22

Version 0.03 (30.08.2018)

  • OSX version
  • Linux version
  • Tutorials:
    • Finished RB1 game
    • Exomizer decrunch tutorial
    • Horizontal starfield tutorial
    • Timed fading text writer tutorial
  • Compiler / syntax
    • deczp (as opposed to inczp, to decrease zero page pointers)
    • decrunch supports name only, user doesn’t have to calculate decrunch address anymore! compressed_image: incbin("logo_compressed.bin", $8000); decrunch(compressed_image); 
    • incbin & any memory position can now be arbitrary, will be automatically sorted
    • define arrays at certain memory positions : my_arr: array[64] of byte = (1,2,3,4 ...) at $7800;
    • ClearScreen speed improvement
    • Bugfix: incbin/at using “$8000” or $8000 are now identical (pure strings are not required)
    • Bugfix: inc / dec didn’t work for arrays (my bad!)
    • New post optimizer: if there is a lda v; tax (without a sta/tay afterwards), change to ldx v
  • IDE
    • Better export parameters for images
    • level editors / etc loading flf charsets
    • post-optimizer toggle actually enables/disable post-optimizing
    • Small bugfix copy/paste image data tool

Version 0.02 Alpha (22.08.2018)

In this version, the self-auto-updater which really didn’t work has been removed. In order to use this new version, please extract to a new folder and then copy your personalized settings file “fluff.ini” from the old directory to the new.

This version should contain some missing dll’s that is typically installed with VC redist, so the program won’t crash on non-developer environments.

  • IDE
    • First version of movie creator (doesn’t work, don’t use, paths and values are hardcoded, just forgot to remove before build). Will be included properly later.
    • Simplex nose creation and usage (not really included, but supported, proper documentation and user API will follow in a later version)
    • MultiColorImages now contain additional export parameters such as start & end of char export
    • Multicolor images and charsets various improvements and bugfixes
    • Smaller bugfixes
  • Compiler / Syntax
    • Fixed error in multicolormode / scroll
    • FLD now takes a parameter and supports both bitmap and text modes
    • Most important in this update: Exomizer decrunch. Basically just write decrunch($pos + $end); and automatically decrunch your random data. An example:
      • Say you have some character data that you would like to place at $6000. In win/linux prompt, with exomizer type “exomizer mem -lnone myFile.bin@0x6000 -o myFile_crunched.bin”
      • Assume crunched data is in total $56 bytes and is included at $8000. Then just type : decrunch($8056), and your data will be extracted to $6000!

Version 0.010 Alpha (11.06.2018)

  • IDE
    • Bufix colors level editor
    • Memory Map & analyzer
  • Compiler/syntax:
    • @userdata “from address” “to address” “name” to specify user-specific data for memory map purposes

Version 0.009 Alpha (13.05.2018)

  • Compiler/syntax:
    • Fixed a nasty error where lookup array in conditionals didn’t work (if a=arr[i] then…)
    • Fixed a nasty bug where all-uppercase variables (especially pointers) didn’t work…
    • Fixed a crashing bug when trying to declare variables after procedure declarations
  • IDE
    • Charsets and sprites have flip horizontal/vertical
    • Display current char ID in hex & dec together with position
    • First version of “Image effects”, rendering all sorts of lines or circles (for use in tunnel effects)
    • Export binary now has a custom parameters dialog box (currently  only for charsets, specify which chars to export etc)
  • Tutorials:
    • Work on TakoNeko game (TakoNeko currently removed from tutorials)
    • Tutorial 18+19 tunnel effects etc added, but not included in the current version

Version 0.008 Alpha (04.05.2018)

  • Compiler/syntax:
    • Removed incscreenx, use inczp instead (faster)
    • Added wait(val) for exact cycle waiting etc
    • Added new type: cstring which converts text to built-in C64 screen codes (similar to .text or SCRU/SCLR)
    • Minor fixes (random crashes when forgetting certain keywords etc..)
  • Tutorials
    • Added tutorial 17, 2×2 font scroller + additional font
    • Added first version of tutorial game #2: TakoNeko. Currently just a side scrolling level, but hey!
  • IDE
    • Fixed a serious error in the level designer that sometimes added an extra byte to levels and destroyed the entire file. Puh!
    • Huuge overhaul of image / char editing, should be much more streamlined now

Version 0.007 pre-alpha (23.04.2018)

  • Compiler/syntax updates:
    • Proper pointer integration, removed default zeropage1-7, you now have to declare as pointers (var myPointer:pointer;)
    • Pointers as procedure parameters (yay!, procedure RenderStuff(data:pointer);)
    • Conditionals can take optional paranthesis (if a=b .. if (a=b) ). Logical ops have parameters required.
    • Bugfix in IRQ handling
    • nmirq to enable/disable/hook NMI irq (disable break)
    • keypressed(KEY_XX)=1 to test whether key is pressed (NOT using kernal…)
    • copyfullscreen optimized
    • Improved string definitions (multilines etc, text: string = (“THIS”, 10, ” STRING “, 20))
    • ReturnInterrupt (rti) and Return (rts) builtin functions for smoothness
  • Editor updates:
    • Zeropage pointer settings
    • Errors in include files will automatically open the file and move the cursor to the line number with error
    • Pressing “F2” on a procedure call will  move the text cursor to the procedure definition
      • will also implement this for variables (when time)
      • Does not work for multiple include files (yet)
  • Tutorials
    • Mega IRQ fullscreen scroller (16 rows) (tutorial 16)
    • Updates on Rogue Burger One

Version 0.006 pre-alpha (19.04.2018)

  • Compiler/syntax updates:
    • Fixed minor bugs
    • Better integer support (again..)
    • Added FLD builtin method (Flexible Line Distance)
    • Added Jammer (for debugging purposes)
  • Editor updates:
    • No more crash if file doesn’t exist (changed dir, moved, etc)
    • Fullscreen Char image files
    • Minor optimizations
    • Enhanced integer constant binop in built-in methods etc
  • Tutorials
    • Working on full cracktro intro (Hokuto Force), not yet included

Version 0.005 pre-alpha (15.04.2018):

  • Compiler/syntax updates
    • Fixed bugs in scrollx/scrolly
    • SetMemoryConfig fix
    • 16×16 integer division (yay)
    • better integer handling
    • Deleted some old functions
    • Build automatically saves file
    • Lesser optimizations
  • Tutorial
    • Polygon filler first unoptimized version (tutorial 15) + rotations

Version 0.004 pre-pre-alpha: (12.04.2018)

  • Compiler/syntax updates:
    • disableinterrupts changed to disableciainterrupts
    • setmemoryconfig(io=[0:1], kernal=[0:1], basic=[0:1]); sets $01
    • for loop step : for i:=0 to 20 step 5 do begin …
    • Also added support for unary negative op: -1 = 255, -100 = 156 etc
    • for loop bugfix + speed + removed jump
    • Overhaul of Raster IRQ system
      • EnableRasterIRQ
      • StartIRQ
      • RasterIRQ
      • CloseIRQ
      • EnableIRQ (cli)
      • PreventIRQ (sei)
      • EnableRasterIRQ
  • Editor
    • Exomize support
    • Build variables (currently on the right-hand part of compiler output), enable exomizer/optimizer etc
    • Help Dialogue + started writing help text (F1 on any word)
  • Tutorial
    • Simple stable raster (tutorial 13)
    • Fire demo effect (tutorial 14, simple, to show optimizing)

Version 0.003 pre-pre-alpha (08.04)

  • Compiler / syntax updates and changes:
    • Important optimizer: a:=b+c now takes 12 cycles instead of 25. wtf. why wasn’t this fixed earlier? (explicitly checking if there are only two variables/numbers and a binary operation of +/-). Reduced code size by 4%, substantial speed increase.
    • Added onpage/offpage keywords to force condition+loops to use fast or slow branching +-127 page jumps
  • New built-in methods:
    • Inc(var), Dec($D800). Same as var:=var+1, but still easier to write.
  • Editor changes
    • Less aggressive code completion (popup goes away when pressing ctrl, backspace etc)
    • Reloads .asm files when tab selected
    • Kills all vice instances on build

Version 0.002 pre-pre-alpha 07.04.18:

  • Compiler / syntax updates and changes:
    • Integer bugfixing
    • String bugfixes
    • Removal of hash # before integer literals
    • Compulsory pointer ^ to addresses poke(^$D800, …) etc
    • Initializers (string, bytes) var a:byte=5; b:string=”weee”;
    • 8-bit division that is *not* power of two (power of two already implemented)
    • Lesser optimizations
  • New built-in methods:
    • CopyCharsetFromRom(address)
    • ClearBitmap(address, count)  – count is 256 bytes*count
    • Hideborderx() – removes x border
  • New RasLib methods:
    • Line(x1,y1,x2,y2) bitmap mode
  • New tutorials:
    • Tutorial 11 Line Drawing
    • Tutorial 12 DYCP Scroller
  • New bootstrapper
    • Let’s hope this fixes the auto update.

Version 0.001 pre-pre-alpha :