Note that TRSE is compiled freshly every night, and that the downloads are always the newest versions.
Operating system | Download link | Comments |
---|---|---|
Windows 64 bit (Nightly build) | Download | Extract and click on trse.exe. Configuration file will not be overwritten. Both TRSE and the OK64 should work right away. |
macOS (Nightly build) | Download | Please follow these instructions to avoid TRSE being flagged as quarantined:
|
Linux 64 bit (Nightly build) | Download | 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 |
Source | Github link | Build latest version from scratch using Qt. Readme.md for instructions. |
Older versions | Link to older releases of TRSE | Excellent way to track TRSE improvements! |
OK64 | OK 64 for macos (arm) and Windows64 can be downloaded from here |
Check out the instructions for correctly setting up each of the systems in TRSE
Version 0.18 (Spring 2024)
- Systems/tutorials:
- TIMTRIS for the TIM sample project added
- Added support for the hungarian Primo computer + images + 3 example files
- Added c64 hires bitmap tutorial
- TVC tutorials fixed up
- SNES tutorials fixed up + fixed some lesser bugs
- Agon bitmap mode example
- Added support for the Aegon computer. ZorgAsm now supports 24-bit addressing modes, no need to use any external assembler. Someone please make units/example files!
- Added support for the Foenix with a couple of tutorials.
- Fixed up a lot of broken tutorials, missing files etc
- Started rework of C64 tutorials to use the new unit system
- Adding help text to the unit system
- New / refreshed Atari ST 520 tutorials, sprite compiler, examples etc
- M68k compiler bugfixes, unit test now running properly again
- Compiler:
- EZ80 24-bit addressing support in ZorgAsm
- 6809 MorgAsm assembler implemented
- Procedure overloading support (experimental)
- Inline procedure assembly overhaul:
- Parameter variables now work in inline assembly inline procedures
- Inline asm can now have auto-generated labels
- Editor
- Editor will now remember / load external library .tru files on project load
- Editor will now remember the order of files in the tabs
- Cmd+L file selection dialogue can now use up/down buttons for selecting a file
- F3 now toggles between source/asm
- c64: Fixed hires editing / importing
- Image editor :”room selector” dialog for level editing implemented
- Massive bugfix in the vic20/c64 level editor, hybrid mode
- Image editor aspect ratio fixed up
- Pressing help (F1) now works for procedures defined in units
- When starting TRSE, the most recent project will now be automatically loaded. You can turn off this behavour in the TRSE Settings Editor panel
Version 0.17 (09.11.2023)
- Systems/tutorials:
- Preliminary Sparkle 3 support, check out the C64 sparkle 3 example project
- Amiga 500 tutorials updated / rewritten (not finished yet)
- X86 VGA tutorials updated / rewritten (with the generic level editor)
- Vectrex support with two example files
- TIM tutorial updates
- TVC tutorials by Zsolt B.
- VZ200 leve editor game example project “glitch”
- Some new tutorials: VZ200, ZX spectrum plasma, TIM etc, VIC-20 3d example
- VIC-20 LBM mode
- Thomson mo5 support + a couple of tutorials
- New project templates updated
- Editor
- Image editor parly rewritten, dumped opengl due to windows crashes. should be faster and snappier, no resizing of the main window, aspect ratio working properly, new grid handling etc, several bugfixes.
- Compiler
- added experimental support for boolean expressions, ie “j:=((a<3) and (c>3));”, j will be set to true (1) if the condition holds or 0 if it doesn’t. These boolean expressions cannot be used within conditionals, so “if (a<(b<c))” is not allowed (for obvious reasons)
- Support for macros. See the TRSE syntax page for more information, or the C64 example in easy/27_macros.ras.
- You can now define global function parameters in units that are located in another unit, ie in Unit1::procedure hello(Unit2::y : global byte) etc
- An old feature removing spaces before lparen was removed, ie strings that looked like “hello (c)” was always generated as “hello(c)”. The spaces are now preserved.
- Fixed a bug where the z80 post-optimisation was too eager with ldir
- Z80 lo/hi can take expressions
- Chip-8 compiler WIP
- Fixed up class bugs : 16×8 bit mul / div on class members etc
- Generic Level editor image type + VZ200 example
- Internal 6809 assembler (mOrgAsm) added. 85% working.
- “long” type added to the 6502. Mul/div operations still missing.
- 6809 compiler improvements. post-optimiser added.
- X86 bugfixes, all unit tests now works
- Lots of more z80 bugfixes and unit tests
- 6809 “Abs” and “mod” added
- 3d library works on the z80, with signed mul/div. Added TIM-001 and VZ200 3d examples.
- 6809 changes. switched from using register “y” as integers to “x”. much faster.
- “boolean” type better fleshed out. Now works in tandem with “not”, ie “if (not exists(“hello.txt”)) then”
Version 0.16 (10.02.2023)
- Plan is to add libraries and tutorials for a lot of systems
- Disk loader tutorial updated
- New project: Demo set up project template/tutorial for loading compressed parts from disk.
- WIP new demo disk loader tutorial project + project template
- Lots of new Z80 optimisatons added
- Systems/tutorials:
- New disk system. You can now (on commodore systems) define multiple disks, not just the fixed 2. See the project settings for details.
- 6809 compiler v1 finished. Needs some optimisations, but at least it works. All unit tests pass correctly. Classes not added yet.
- Coco3 with a couple of tutorials (plasma, twister, putpixel)
- New disk system for the C64. Define unlimited disks in the project settings, all will be automatically created on build. No more limitations to 1.
- “Sound Test” small C64 SID sample project added
- “Big Pixel Intro” c64 sample project added
- C64 D81 support (in the project settings)
- Work on Coco3 and 6809 support started
- Videoton TVC added
- System TIM011 added!
- SNES bitmap image example
- Amstrad CPC multiple sprites tutorial
- Updated commander X16 tutorials to work. Still some missing features. Planning to add
- Updated C128 tutorials, added missing methods, complete overhaul
- Added more demo effecst to the c64 “demo effects” sample project
- The C64 has an updated version of Krill’s loader, now always using shadow directories
- C1541 phased out – TRSE now uses internal source code for generating disks. No need for VICE’s c1541.exe anymore.
- Loading compressed raw data on the c64 should now work
- Automated directory art support: in the project settings, simply point the dir art setting to a .flf c64 text/animation image and the .d64 will be generated using this art
- Atari 520 ST fixed up for windows. Added new tutorial, tutorial6
- Compiler:
- Added “Unroll” parameter for unrolling for loops. Needs numeric values. For i:=0 to 10 unroll do printnumber(i) will unroll the loop.
- More strict syntax. was a bug where parameters didn’t need “,”. wtf.
- 6809 support
- Z80 optimisations
- casts. Especially useful for declaring compound strings on the fly :
- Print(string(“My”,10, ” STRING);
- Fixed a bug where units addressing constants in other units failed
- Better error message when trying to use a global variable as a parameter in a class function within a unit
- Optimiser will better recognise variables used in asm (“”) blocks, so you won’t have to use @donotremove as much
- optional”forward” keyword added for forward procedure/function declarations. Until now, TRSE has been guessing whether a procedure declaration is forward or not, which will fail in certain situations (followed by a new var block etc). While option, wholeheartedly recommended. procedure MyProc(a:byte); forward;
- Working on 6809 support.. still quite a long way to go
- Chars can now be used in TRSE. Syntactially, they are the same as bytes, so
- myByte := ‘C’; // myByte contains the value 67
- myByte:=’0′ + 5; // myByte contains the char value of ‘5’
- Note that the old myByte:=”A” has been deprecated and is not allowed anymore.
- String Lists are now much better handled. You can have more advanced string lists:
- myLst : array[] of string = (“HELLO” ,(“YOU “,65,88, ” EH”, “WORLD”);
- You can assign new strings to list and use them as regular, mye myLst[2]:=”OOPS”;
- Compiler more strict: cannot use “string” as procedure parameter (use reference(byte pointer instead)). This was never implemented into TRSE, as string copying when calling string parameters is.. silly. Might implement it in the future though.
- Removed uneccesary warnings
- Fixed an illusive bug where using a less than or equal “<=” if statement within a for loop failed on the z80
- short hand SHL SHR implemented: a<<=1; for a := a << 1
- Z80 bugfixes. Casting between int/byte works for functions, int/byte arrays, array pointers, conditionals calling functions of various types.
- Z80 16 bit shifts properly implemented
- New unit tests for casts. Caught and fixed a bug with integer assignment on the 6502
- Compiler more strict: “global” keyword parameters must have the same type as the originally declared variables
- Z80 “ret nz”, “ret po” etc implemented properly
- 65c816 “long” type
- 65×816 bugfix when addressing 24-bit addresses
- Editor:
- Videoton image type
- TIM image type
- New Amstrad CPC sprites container image type
- If a help window is opened, pressing F1 will keep using the window when looking up help text
Version 0.15 (01.11.2022)
- Systems:
- TIM-011 support added
- TRS-80 (Model 1, Z80) + 1 example file
- Pokemon Mini (WIP) + 2 example files.
- Wonderswan (1 example file)
- Fixed up MSX
- Tutorials:
- TIM-011 tutorials
- C128 Small Game project by CrazySpence
- New c64 example project : DemoEffects – with a couple of released/unreleased demo effects
- Amiga 500 “Hopscotch” demo added
- DOS CGA 16-colour 160×100 mode added + tutorial
- zx spectrum “new project” template added
- joystick tester .crt sample project added
- Editor:
- Fixed up the general settings + project settings windows to work on low-res computers etc, re-grouped and merged a couple of tabs
- Ray tracer + .paw compression now supports OpenMP on macos
- You now get compile outout on all windows, syntax highlighting and symbol keys
- Reserved words pop up in autocomplete
- Z80 memory analyser fixed up
- New size analyser : click the button or press ctrl + Y to analyse the size of your program. Must use OrgAsm (Z80+6502)
- Image editor: Added cut/paste and paste only toolbox items
- Image editor: Fixed annoying bug when placing pixels / stamps on edges
- Compiler
- OrgAsm now allows 2d unrolled code (repeat 40 20) yielding indices “i” and “j”
- Fixed a crashing bug where the IDE would sometimes crash when triggering build too fast
- Fixed a (rather major) bug where parameters in forward declarations didn’t work
- “mod” modulo built-in method for the m68k
- @endassembler ” jmp $fff” will insert string at the end of the output assembler
- big compiler rework: addresses can now be used more as intended, ie screen_bg_col+=3; etc
- single begin / end blocks without anything will not crash the compiler
Version 0.14 (jan 29, 2022)
- Systems:
- Acorn Atom support + 1 tutorial
- M1 Arm support + tutorials (in progress, for making command-line m1 macos programs)
- MEGA65 now uses CL65 as the assembler, allowing for 4510-style opcodes
- VZ200 support + tutorials + units + new project sample!
- SNES & the WDC 65C816
- “Custom” TRSE system. From the project settings, select “Custom” system – and set up your own custom CPU, assembler and emulator + parameters. Use “@startassembler” to insert header data to your custom .asm.
- Dosbox cycles project parameter
- New preprocessors yielding the current CPU architecture: @ifdef CPU_6502 etc
- X16 switched from the 6502 to CA65 and the WDC65C816
- Tutorials:
- PBM library – “Pet Bitmap Mode”. Petscii “bitmap mode” library for displaying and moving sprites. VIC-20,C64 and PET sample projects added.
- BBC demo “Beep!” full source project included
- “Wormwood” c64 16kb cartridge game
- Mr. Tibbles added (sample Gameboy project)
- New 3D C64 tutorial (color cycler)
- Fixed up Dos Beeper player
- 4 SNES tutorial / example files : sprite handling, input, level rendering, music and tiles
- VZ200 tutorials + units
- VZ200 game
- A couple of new tutorials based on the youtube videos
- Cross-platform text IO system + tutorials (by Chris Garrett)
- Editor:
- TR Tracker now has a piano-style interface
- Aspect ratio fixed up in the image editor
- SNES tile+sprite+level editor
- VZ200 128×64 image type + export
- Front page redesign
- New document type: .rtf files. Display custom html(rtf) files in your project – help or history or whatever. Link to local files by using the “@path;” parameter, <img src=”@path;images/my_image.png”> etc
- Compiler:
- length() now returns the correct number of elements in an array of pointer
- Help text should now be available for all systems
- List of strings : lst : array[3] of string=(“THIS”,”IS”,”NICE”); and then printstring(lst[2],0,40) etc
- TRSE now accepts expression as case statements, not just pure variables (“case (a*2+b) of”).
- Compares with “true” have changed: previously, false was “0” and true was “1”, so if you typed “if a=true” it would fail if a was anything but 1. This as been changed so that whenever you compare “a=true”, the compiler will interpret this is “a <> false”. Similarly, “a <> true” will be interpreted as “a=false”.
- bitand “not/~” keyword implemented. Basically the same as XOR 255, so “i:=not 2” will yield 253.
- Z80 bugfixes
- lpointer (long 24-bit pointer), used with the SNES (wdc65C816)
- wdc65c816 long jumps, code placement at banks
- Records / arrays of records can now be declared with initial values (only on the 6502 for now), ie myArray : array[10] of SomeRecord = (10,20,30… );
- 6502 mod16 for 16-bit modulo
- “local variable prefix” default parameter turned on for new projects (allowing variable names to be reused)
- Keyboard “global::” added to distinguish between local “x” and “global::x”
- ARM support
- z80 “mod” implemented
- “stack” parameter flag for using stack-based parameters allowing for recursion etc (6502 only)
- Extend class support
- Arrays support the “compressed” flag (6502 only)
- Class optimisations and bugfixes
- call class methods bugfix
- able to call class functions
- CI:
- Spam the unit tests!
- Fix up the remainig bugs / mishaps in the various codegens
- Get Atari ST to run in the unit tests
- Bugfixes:
- “Inline” procedures can now have local variables
Version 0.13 (31.05.2021)
Changes between 0.12 and 0.13 :
- Systems
- Basic MSX support added
- Basic AppleII support added
- x86 386 updates and overhaul
- 386 QEMU OS support + tutorial
- ZX Spectrum overhaul + tutorials
- X86 Qemu OS system + tutorials
- Z80 internal assembler : ZOrgasm (together with Orgasm) – replaces Pasmo for the Amstrad CPC
- Tutorials:
- 1981 C64 demo full demo system + effects sample project
- QEMU OS X86 example (X86 raw OS in TRSE)
- Amiga small intro sample project (https://www.youtube.com/watch?v=h5jpWgJN0VI)
- 386 VGA tutorials : Adlib music, VGA effects, lots of stuff, 6 new tutorials
- 386 3D engine, C64 3D engine + example
- 6502 3d engine “lib3d” first version, draws wireframe 3d objects on the bbc
- VIC-20 music player using TRT file.
- Z80 unit tests
- ZX Spectrum overhaul + tutorials + libraries
- Z80 floating point library + mandelbrot example file
- Adlib player for the X86
- PC Beeper (“BeePlay”) player using TRT files
- Fixed up the MEGA65 tutorials
- Added an Amiga500 copper plane tutorial
- MSX tutorial
- AppleII tutorial
- Editor
- Right-click-on-file-list menu system: Create, rename, delete, duplicate, create folder etc. Right click on the project explorer.
- Editor cleanup with autocomplete/indent/begin end, shift-tab bugfixes, forgiving selections etc
- New colour scheme: “dark sky”
- New TRSE document type: TRT (TRSE Tracker) music file. Currently supports VIC-20 and Adlib. Tracker is currently just manipulating data, no built-in player.
- Level editor has grid size selection
- You can now associate .trse project files in windows with the TRSE.exe application for quick opening of projects.
- All open and named ras/inc/tru files are saved on
- “show all” project option to list only the most important / all files.
- CI:
- Unit tests (running automatically in the CI). Boy. So much to fix up still, but things are improving…
- First working continuous integration on github
- automatic compiling + releases of windows/macos/linux builds every night
- Script for automatic compilation of almost all tutorials for testing
- Compiler:
- Buildtable2D(20,4, “i +j”); and BuildSineTable(127)
- Massive bugfix + update in the compiler for all systems, as unit tests are now *common* on all CPUs – and must pass the various tests
- Rewrite of parts of the compiler, renaming of a lot of classes, merging of “higher” common code generator code.
- First working version of classes with properties +class methods. Not much else yet. Class data are saved chunky, as opposed to Record data that is stored as individual arrays. This makes pointer to objects possible.
- TRSE CLI (command line interface) for compiling projects from the command line. Type “TRSE -cli” for usage.
- Global units (for all project / cpus / systems)
- Z80 bugfixes + optimisations
- Z80 integer indices (for int :=0 to 1000 do zp[int] := int; )
- Z80 16×8 and 8×8 multiplication
- Z80 string bugfixes.
- Z80 ability to use register names as variables (“i”,”a”,”c” etc)
- @execute directive for executing shell programs/scripts on build
- IncBin has been extended to support two new optional parameters: start and length. Incbin(“myData”,$2000, $100,$1000); will place the binary file at memory address $2000, but skip the first $100 bytes of the data in the file – and only include $1000 bytes.
- “Type” definition – sort of shorthand. For example : declaring “type mat3 = array[9] of integer;” in a unit “Matrix” lets you use “Matrix::mat3” as a shorthand for the array definition.
- Integer pointer constant optimization p[4] := …
- So many updates on the x86 – how pointers are handled is completely written, tons of optimizations etc
- x86 post-assembler optimization added!
- Compiler now accepts C++-style binary operation assignment statements such as “a+=2”, “zp -= 40”, “c &= d”. Internally, the parser interprets “a+=2” as a shorthand for “a:=a+2”, and simply performs this small translation.
- Inline assembler can also be used with BP/TP-style assembler : “asm mov ax,10 end;”
- Lots of X86 updates: 386, VGA methods, memory, Timer IRQ, Adlib player
- Bugfixes
- a[1]+a[2] byte array 6502 bugfix
- lots of lesser optimisations
- Sprite transposing & flipping fixed
- Level editor displays MC1+MC2
- “:” can appear in strings
- VIC-20 Hybrid mode level edior fixes
- Multiple tabs with same file bugfix
- Pointer addition fix
- Copy/Paste image editor noise bugfix
Version 0.12 (06.02.2021)
Changes between 0.11.5 and 0.12:
- Tutorials:
- “Mørketid” added as an Amstrad CPC demo project
- “Cheese Trials” VIC-20 game sample project added
- “Escape 2020” VIC-20 game sample project added
- New gameboy tutorial
- Mega65 tutorials
- BBC tutorials (general tutorials + BBC Demo project)
- Atari 800 tutorial (very basic, to do)
- “PetFrog”, a small Commodore PET game sample project added
- Updated + new project templates for all systems
- Systems
- Basic support for the Mega65 + first tutorials. Still lots of work to do.
- BBC Micro + units + tutorials + music player etc
- Atari 800 basic support
- Changes / Updates
- Units can @include files from the unit directories.
- Updated “About” dialog
- OrgAsm now supports “repeat N” with “repend” for unrolled loops. Also, use “[i]” to get the current index (as in “jmp MyLabel[i]”) etc
- File text colours tweak
- Silly splash screen
- BBC mode 5 and mode 2 image types
- Unused symbol list optimizer should be much better
- _a, _x, _y, _ax, _ay, _xy internal register variables for the 6502. Quite useful for fast parameters in unit procedures
- Self-documentation in TRU files: everything encapsulated between /** and **/ will be compiled as a separate TRSE help document.
- “toProcedurePointer” has been deprecated, replaced with a single address “#”. I.e assign your procedure pointers as such: “pointer := #myProcedure;”
- Procedures with 0 parameters can be called without using parentheses (both myProc(); and myProc; are valid)
- Help F1 shows up in a separate tab next to the output. Press a button to maximize, esc to return.
- “Recent project list” also display project system
- Units moved from tutorials to a dedicated “units” folder. Potential code breaker if people have put their units in the old public folder.
- A lot of image editor updates
- Binary files are reloaded when you focus
- Parallax fjong compiler (undocumented)
- Fade-in-fade-out of bitmaps fjong compiler (undocumented)
- Full filename path in tab tooltip
- New clickable showcases OpenGL widget
- More images for the banner
- Warnings now have line numbers + file name associated with them. Array warnings contain the array name in question.
- SID files are shown in the project folder. Can be double-clicked to play, set up player in the TRSE settings dialog.
- Bugfixes
- Fixed up duplicate tab problem when pressing F2 / clicking on TRUs to open them
- Fixed a bug with symbols not being carried over when switching files
- NES PPU optimisation bugfixes
- You can press F2 to go to a symbol defined in a unit
- zp[0] := zp[0] +1 bugfix
- C64 Sprite import first new version
- CString can now take lists with numerals
- “String” with numbers can now use constants + expression (ie myString : string = (“HELLO” , My_const*4+1, 4 , (3*2)+1,”WORLD”);
- Strings in Orgasm that contain commas now work properly
- select + tab / utab indent now fixed – selection doesn’t vanish
Version 0.11-0.11.5
- 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
- Integer arrays in records bugfix
- Undeclared / incorrect constants in array declarations now yield an error (instead of simply producing a “0”)
- Systems / tutorials
- Amstrad CPC 464
- 5 tutorials
- TRUs
- 7 new C64 tutorials
- Language tutorial typos fixed
- 2 new m68K compression tutorials (for Atari ST + Amiga)
- 2 new VIC20 bitmap image compression tutorials
- Amstrad CPC 464
- Compiler
- “Break” and “Continue” control flow statements implemented.
- “Return” moved from being a method to a control flow statement (part of the language)
- 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
- C64 image importer has a much better way of selecting colors, providing much better conversions
- Lots of ray tracer updates, currently undocumented
- SID files are now displayed in the project tree. Also, you can set up an external SID player for double clicking
- Tab / Shift+tab to indent/un-indent selected blocks of code
- Ctrl+E to comment/uncomment blocks of code
- 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
- Integer arrays have had several bugfixes:
- 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)
- ♦New built-in methods:
- 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)
- Image editor
- 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!
- Rudimentary C128 support
- 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.