Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > CSDb Entries > Release id #216054 : GTUltra V1.0.3
2022-03-29 21:41
spider-j

Registered: Oct 2004
Posts: 498
Release id #216054 : GTUltra V1.0.3

Better take this to discussions to not flood the comments.
Quote:
Can you run it from the win32 folder?

Running the exe through WINE works fine. I'd prefer a native linux build though.
2022-03-29 22:21
chatGPZ

Registered: Dec 2001
Posts: 11350
same problem here, there is some file missing:
$ make
./bme/dat2inc gt2stereo.dat goatdata.c
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive   -c -o goatdata.o goatdata.c
cc1: Warnung: Kommandozeilenoption »-fpermissive« ist gültig für C++/ObjC++, aber nicht für C
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive   -c -o gt2stereo.o gt2stereo.c
cc1: Warnung: Kommandozeilenoption »-fpermissive« ist gültig für C++/ObjC++, aber nicht für C
In Datei, eingebunden von bme/SDL/SDL_stdinc.h:30,
                 von bme/SDL/SDL_main.h:26,
                 von bme/SDL/SDL.h:30,
                 von bme/bme.h:6,
                 von goattrk2.h:12,
                 von gt2stereo.c:26:
bme/SDL/SDL_config.h:42:10: schwerwiegender Fehler: SDL_config_minimal.h: Datei oder Verzeichnis nicht gefunden
   42 | #include "SDL_config_minimal.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~
Kompilierung beendet.


edit: after copying the missing file from a random source on my hd (which may or may not be correct, this file doesnt exist in my system libs) it goes further until the linking stage - which then craps out with a ton of undefined and duplicate symbols.

what kind of environment is this supposed to work in?

ticket

edit++: there also seem a bunch of files in the repo that shouldnt be there.... like dotfiles with macos metadata in the SDL header dir. And the entire SDL header dir itself actually :)
2022-03-30 15:10
Jason Page

Registered: Sep 2015
Posts: 87
Following the info that zzarko posted in the main thread (GTUltra V1.0.3), I've added the changes from his patches.

Hopefully downloading / removing a few #defines will now allow for successful linux builds

Cheers
Jason
2022-03-30 15:17
Jason Page

Registered: Sep 2015
Posts: 87
(have hopefully also removed all offending .o and .h files too)
2022-03-30 18:15
Silver Dream !

Registered: Nov 2005
Posts: 108
Haven't tried on GNU/Linux yet (the second of the two systems I use) but on mac it now asks for missing `SDL_config_macosx.h`


silverdr$ make
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -I/usr/local/opt/openssl/include -c -o gt2stereo.o gt2stereo.c
In file included from gt2stereo.c:26:
In file included from ./goattrk2.h:12:
In file included from bme/bme.h:6:
In file included from bme/SDL/SDL.h:30:
In file included from bme/SDL/SDL_main.h:26:
In file included from bme/SDL/SDL_stdinc.h:30:
bme/SDL/SDL_config.h:34:10: fatal error: 'SDL_config_macosx.h' file not found
#include "SDL_config_macosx.h"
^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [gt2stereo.o] Error 1

Also I am not sure if this is "standard" or not but SDL2 on my system provides `sdl2-config` rather than `sdl-config`. I guess this uses SDL2, right?
2022-03-30 18:33
chatGPZ

Registered: Dec 2001
Posts: 11350
SDL 1 is my guess - this bme lib is ooooold
2022-03-30 19:15
Silver Dream !

Registered: Nov 2005
Posts: 108
Quoting Groepaz
SDL 1 is my guess - this bme lib is ooooold

Uh... I don't remember when it was the last time I had SDL1 installed. Tnx.
2022-03-30 19:41
JackAsser

Registered: Jun 2002
Posts: 2014
Quote: Haven't tried on GNU/Linux yet (the second of the two systems I use) but on mac it now asks for missing `SDL_config_macosx.h`


silverdr$ make
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -I/usr/local/opt/openssl/include -c -o gt2stereo.o gt2stereo.c
In file included from gt2stereo.c:26:
In file included from ./goattrk2.h:12:
In file included from bme/bme.h:6:
In file included from bme/SDL/SDL.h:30:
In file included from bme/SDL/SDL_main.h:26:
In file included from bme/SDL/SDL_stdinc.h:30:
bme/SDL/SDL_config.h:34:10: fatal error: 'SDL_config_macosx.h' file not found
#include "SDL_config_macosx.h"
^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [gt2stereo.o] Error 1

Also I am not sure if this is "standard" or not but SDL2 on my system provides `sdl2-config` rather than `sdl-config`. I guess this uses SDL2, right?


And even if you fix that (I did) it will still complain about link errors. gmidi.o is needed on the linker line and that's windows only atm.
2022-03-30 19:49
Jason Page

Registered: Sep 2015
Posts: 87
I had to search everywhere for a sdl 1 binary. I could have used sdl2, but as I had no idea how GT used it, I wanted to keep as much the same as possible.
2022-03-30 19:55
Conrad

Registered: Nov 2006
Posts: 847
How to access channels 7-12?

I've set the SID numbers to 3 / 4, but I'm stuck with channels 1 to 6 still.

Is there a shortcut key for it?
2022-03-30 20:01
tlr

Registered: Sep 2003
Posts: 1787
Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.

Needed to comment out #define __WINDOWS_MM__ in RtMidi.cpp and switch between the __WINDOWS__ and __LINUX__ defines in gmidi.cpp.
There is also a typo in makefile.common. A spurious '+' sign before gfile.o.
2022-03-30 20:08
JackAsser

Registered: Jun 2002
Posts: 2014
Quote: And even if you fix that (I did) it will still complain about link errors. gmidi.o is needed on the linker line and that's windows only atm.

I manage to hack some more and had it built on Mac using a dummy midi driver. It will generate an executable in the linux folder though but that's easy fixable.
2022-03-30 20:08
JackAsser

Registered: Jun 2002
Posts: 2014
Quote: Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.

Needed to comment out #define __WINDOWS_MM__ in RtMidi.cpp and switch between the __WINDOWS__ and __LINUX__ defines in gmidi.cpp.
There is also a typo in makefile.common. A spurious '+' sign before gfile.o.


Made similar changes on mac. Also had to enable c++11 and fix a == vs = bug.
2022-03-30 20:25
chatGPZ

Registered: Dec 2001
Posts: 11350
so throw your PRs at github? :)
2022-03-30 21:12
Frantic

Registered: Mar 2003
Posts: 1646
Quote: I manage to hack some more and had it built on Mac using a dummy midi driver. It will generate an executable in the linux folder though but that's easy fixable.

Tried to build on my mac, and this is what I got:

cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive   -c -o gt2stereo.o gt2stereo.c
In file included from gt2stereo.c:26:
In file included from ./goattrk2.h:12:
In file included from bme/bme.h:6:
In file included from bme/SDL/SDL.h:30:
In file included from bme/SDL/SDL_main.h:26:
In file included from bme/SDL/SDL_stdinc.h:30:
bme/SDL/SDL_config.h:34:10: fatal error: 'SDL_config_macosx.h' file not found
#include "SDL_config_macosx.h"
         ^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [gt2stereo.o] Error 1
2022-03-30 22:23
zzarko

Registered: Feb 2003
Posts: 76
@Frantic: Just find that file from some other project, and possibly delete definitions that compiler says are duplicates. At least that helped me to compile for Linux.

@Jason Page: Since the program is made with SDL1, that is maybe even discontinued, you can port it to SDL2, or possibly use a new project that had its first release this month, SDL12-compat, implementation of SDL1 API atop of SDL2, made for usage with older projects:
https://github.com/libsdl-org/sdl12-compat

I haven't used SDL so far, so I do not know how much work would porting take. Here is official SDL migration guide:
https://wiki.libsdl.org/MigrationGuide
2022-03-30 22:33
chatGPZ

Registered: Dec 2001
Posts: 11350
For GT2, my guess is it would be very easy to port to SDL2 - a lot of things don't have to be changed at all (and GT2 really only uses very basic SDL features).

That said, please merge the PR from Leandro :) The source in the repo really should be fixed to compile out of the box, not requiring such hacks, that makes things needlessly complicated
2022-03-30 22:49
Jason Page

Registered: Sep 2015
Posts: 87
Quote: Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.

Needed to comment out #define __WINDOWS_MM__ in RtMidi.cpp and switch between the __WINDOWS__ and __LINUX__ defines in gmidi.cpp.
There is also a typo in makefile.common. A spurious '+' sign before gfile.o.


2022-03-30 22:50
Jason Page

Registered: Sep 2015
Posts: 87
Quote: How to access channels 7-12?

I've set the SID numbers to 3 / 4, but I'm stuck with channels 1 to 6 still.

Is there a shortcut key for it?


For channels 7-12, these use odd song numbers

So song 0. = 1-6, song 1 v7-12…

Both songs play at the same time in the editor.
Read the GTUltra.PDF - all explained in there.
2022-03-31 23:17
chatGPZ

Registered: Dec 2001
Posts: 11350
Quote:
Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.

but did it actually run? ticket
2022-03-31 23:31
Jason Page

Registered: Sep 2015
Posts: 87
Quote: For GT2, my guess is it would be very easy to port to SDL2 - a lot of things don't have to be changed at all (and GT2 really only uses very basic SDL features).

That said, please merge the PR from Leandro :) The source in the repo really should be fixed to compile out of the box, not requiring such hacks, that makes things needlessly complicated


Looking at SDL2. Although, I'll likely hold off changing things until I'm sure that I've fixed a few other issues that have been mentioned - Just so it's one less possible factor when trying to track problems.

I'm no github or linux expert, so please excuse my noob crappy handling. I've honestly just bought Github for dummies...!
2022-03-31 23:34
chatGPZ

Registered: Dec 2001
Posts: 11350
Leandro already ported it to SDL2 :) see https://github.com/jpage8580/GTUltra/pull/8
2022-03-31 23:38
chatGPZ

Registered: Dec 2001
Posts: 11350
Quote:
I'm no github or linux expert, so please excuse my noob crappy handling. I've honestly just bought Github for dummies...!

After we managed to make the digital talk people use git and github, i am no more able to accept any excuses like this. sorry :) (If you are on windows, install the github client - rather than plain git - and look at the tutorials they provide. it's not hard at all :))
2022-03-31 23:42
spider-j

Registered: Oct 2004
Posts: 498
@Jason: Perhaps it can help if you take a look at the dev branch of gt2fork. There is a proper implementation of rtmidi and SDL 2 which can be built for windows and linux aswell:
https://github.com/jansalleine/gt2fork/tree/dev

I'm very far away from the original GT2 code though, but the defines and Makefile compile options should still give good hints I guess. Another option would be to check out Leandros GT2 fork:
https://github.com/drfiemost/goattracker2

That's the great thing about open source: no need to re-invent the wheel :-)
2022-04-01 08:18
Youth

Registered: Aug 2003
Posts: 43
Quoting spider-j
That's the great thing about open source: no need to re-invent the wheel :-)


Regarding SDL2 and building for different platforms, you could maybe find some useful information in the SIDFactoryII code too: https://github.com/Chordian/sidfactory2. It has automated Windows, macOS (universal AMD/ARM) and Ubuntu builds, and uses SDL2.
2022-04-01 14:09
Jason Page

Registered: Sep 2015
Posts: 87
I went with Leandro's changes (https://github.com/jpage8580/GTUltra/pull/8)

although there were still a number of other things I needed to do to get it back to a working state, as there was no audio, video initially!

All appears to be good now. Will commit soonish
2022-04-01 15:36
tlr

Registered: Sep 2003
Posts: 1787
Will that also make MIDI work on linux? Only got the dummy driver running. Not sure which defines or dependencies are expected.
2022-04-01 16:25
Frantic

Registered: Mar 2003
Posts: 1646
@Jason Page: Good work!
2022-04-01 17:24
Jason Page

Registered: Sep 2015
Posts: 87
No idea about Linux. I’m putting in the patches that others have given.
However, for windows, it defaults to “audio dummy” unless I specifically set a driver in code. This is an SDL2 thing.
Wonder if there’s something similar for Linux?
2022-04-01 23:53
spider-j

Registered: Oct 2004
Posts: 498
Quote: Will that also make MIDI work on linux? Only got the dummy driver running. Not sure which defines or dependencies are expected.

rtmidi works with ALSA and JACK on linux.

You have to use ljack, lasound libraries when building and set the flags -D__LINUX_ALSA__ -D__UNIX_JACK__.

The docs:
http://www.music.mcgill.ca/~gary/rtmidi/index.html#compiling
2022-04-02 07:12
Jason Page

Registered: Sep 2015
Posts: 87
Ii pushed a new version yesterday that does this.
V1.1.0
2022-04-02 08:03
theK

Registered: Oct 2020
Posts: 46
Great work! I'm super excited to try this! :-)

But I get an error when compiling this on Linux.
-
gt2stereo.c:27:10: fatal error: bme\bme.h: No such file or directory
27 | #include "bme\bme.h"
| ^~~~~~~~~~~
-
The file seems to exist. Not sure why it doesn't go though.

Anyone got any ideas?

The version I tried is 1.1.0

/K
2022-04-02 09:07
spider-j

Registered: Oct 2004
Posts: 498
I still had to correct a few things (like the above mentioned backwards slash), but now I was able to build it.

Seems a lot of thoughts and work went into MIDI functions. I must admit when I built MIDI into gt2fork I really didn't know what to do with it despite entering notes and selecting instruments. I especially like having polyphony in JAM-mode.

What I'm not so convinced of is the general concept how up to 4 SIDs are implemented. But this is also because of the "undefined" nature of 4 SID .SID files.
2022-04-02 09:20
Jason Page

Registered: Sep 2015
Posts: 87
Agreed that the 3 and 4 sid exporting and editing are not perfect. I just didn’t want to completely change the editor (I knew nothing about how it worked initially) or the sng format, as this would likely have just broken everything and caused me to give up on the whole project. But, it does work at least. And it does allow you to jam over,say, a 3 channel song without interrupting those channels.

The format isn’t optimised either for 3-4 sid songs. But, I’d imagine that in 99% of cases, most would be stand-alone music files / .prg rather than part of some elaborate demo.

4 sid support was added as mega65 can handle it. And, adding extra sid support, once I’d made the editor player code more modular, was pretty straight forward.

Will add those patches to V1.1. Hopefully things are really a lot better than the first release now.

Thanks again
2022-04-02 09:24
Jason Page

Registered: Sep 2015
Posts: 87
I was also thinking of making a midi learn function. So you could mute tracks / change filter cutoff, etc. good for quickly testing ideas. But it kind of depends on how useful it would be overall.
Now that it’s moved to sdl2, I can also make use of the mouse scroll wheel as well. Maybe for selecting instruments whilst editing patterns or something.
2022-04-02 16:08
TheRyk

Registered: Mar 2009
Posts: 2218
If I got comments on this one
Powered by Drum Patterns
right, mono tune .SNGs can only be opened by earlier/other GT versions by setting to stereo mode.
Would be great if this could be fixed.
2022-04-02 16:32
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: If I got comments on this one
Powered by Drum Patterns
right, mono tune .SNGs can only be opened by earlier/other GT versions by setting to stereo mode.
Would be great if this could be fixed.


I opened an issue about this on github, and No. Its not an earlier version i mean, its the stereo goattracker version , not an earlier goattracker version
2022-04-02 16:33
Jason Page

Registered: Sep 2015
Posts: 87
GTUltra (and GT Stereo obvs). Will load original 3 channel sng files. But they only save as GT Stereo sng files. I’ll add the ability to save as 3 channel SNG too - along with warnings about possibly losing data if you proceed.
2022-04-02 16:44
TheRyk

Registered: Mar 2009
Posts: 2218
seems fine solution to me, thx!
2022-04-02 19:29
tlr

Registered: Sep 2003
Posts: 1787
Had to add -lpthread and more importantly change the midi port it tries to open. midiin->openPort(1) works on my system.

I guess it would be useful to have a command line option to select port?
2022-04-02 21:32
Jason Page

Registered: Sep 2015
Posts: 87
I’ll add a selection screen that allows you to select from a list. Possibly by holding down escape or something for a second…
Will also give you the option to select audio device for output , as sdl2 requires that to be set for windows. Otherwise, it defaults to dummy audio.
2022-04-03 10:32
tlr

Registered: Sep 2003
Posts: 1787
Quote: I’ll add a selection screen that allows you to select from a list. Possibly by holding down escape or something for a second…
Will also give you the option to select audio device for output , as sdl2 requires that to be set for windows. Otherwise, it defaults to dummy audio.


Even better!

Would be nice to allow optional mono output with multiple sids as well, or may be that's already available?
2022-04-03 11:24
Jason Page

Registered: Sep 2015
Posts: 87
There’s an M in the top line of the screen, next to FV, 8580…
Click on that to change between mono/stereo output in the editor.
(This was already in GTStereo)
2022-04-03 15:48
Jason Page

Registered: Sep 2015
Posts: 87
I've added a MIDI Port selection window

Shift-Click on the keyboard icon on the transport bar to display it.

Not sure what it will show for something with more than one port. shows the correct info for port 0 for me - but I've only the one port available.
2022-04-03 17:20
tlr

Registered: Sep 2003
Posts: 1787
Quote: I've added a MIDI Port selection window

Shift-Click on the keyboard icon on the transport bar to display it.

Not sure what it will show for something with more than one port. shows the correct info for port 0 for me - but I've only the one port available.


It seems to work correctly. I get a resonable listing for my Arturia MicroLab.

There are a bunch of "MidiInAlsa::getPortName: error looking for port name!" errors on the console when I start though. Doesn't seem to affect anything.
2022-04-03 23:03
Jason Page

Registered: Sep 2015
Posts: 87
Cool. It crashes if there's no MIDI ports now - Just pushed another version

I've also made it save as a standard 3 channel SID if there's either no patterns in the order lists for channels 3-6, or if the pattern(s) in channels 3-6 are all empty.
2022-04-04 11:25
Jason Page

Registered: Sep 2015
Posts: 87
If the current version seems good to you all, I'll make a new V1.1.1 binary for csdb. Would be good to include a build for linux though, if anyone could provide that?
2022-04-04 13:54
chatGPZ

Registered: Dec 2001
Posts: 11350
You could setup github actions and have it build windows and linux (and macos with some limitations) binaries on every commit :)
2022-04-06 17:44
theK

Registered: Oct 2020
Posts: 46
I managed to build it on Ubuntu finally. I didn't realize i needed the libsdl2-dev package.

Looking good! Looking forward to test it out! :-)
2022-04-06 18:18
tlr

Registered: Sep 2003
Posts: 1787
Yes, the current master builds nicely. Still getting a bunch of messages about midi ports when bringing up the selection dialog but that seems purely cosmetic.

A side note: there is/was a readme.txt in the regular 3-chn gt2 repo which contains some documentation + a description of the file formats. This never was in the gt2stereo repo so I guess it got lost when you based GTUltra on this. Consider adding the relevant parts back to the repo.
2022-04-07 09:43
Jason Page

Registered: Sep 2015
Posts: 87
I’ll remove the midi output text, add the original GT file format doc and then add a new official V1.1.2 release here.

Thanks again for everyone’s help and feedback.
2022-04-07 10:34
Jason Page

Registered: Sep 2015
Posts: 87
All updated. Hopefully no TTY output.
Have included the original GT readme.txt file too

Jason
2022-04-07 20:15
tlr

Registered: Sep 2003
Posts: 1787
Works well here, good work!
2022-04-07 20:33
theK

Registered: Oct 2020
Posts: 46
Works good in Ubuntu 22.04!
Thanks a lot!
2022-04-08 14:24
Jason Page

Registered: Sep 2015
Posts: 87
Good to hear.
I've just done a final commit, with improvements to char and palette editing.
I'll use that for the 1.1.2 release here.

I've had a few reports of freezes and crashes with V1.1.1 - but I've not been able to replicate.
If anyone experiences problems (and, even better, has repro steps!) please let me know
2022-04-09 07:56
acrouzet

Registered: May 2020
Posts: 91
Is there a key that performs the same function as the clickable “rewind” button? I think it would be pretty useful…at least for me.
2022-04-09 08:35
Jason Page

Registered: Sep 2015
Posts: 87
There isn't..But there can be.
What key would work?
I was thinking of CTRL+LEFT_ARROW, but this would mean that the pattern change that it currently performs would only work with SHIFT+LEFT_ARROW?
Thoughts appreciated.
2022-04-09 09:48
JCH

Registered: Aug 2008
Posts: 200
As fast forward, how about the corner key to the left of the "1" key? That's what I use for DeepSID.

Then perhaps with SHIFT it could rewind.
2022-04-09 10:22
Jason Page

Registered: Sep 2015
Posts: 87
Thanks, Jens.

Will do that. Hopefully got some spare time this evening to implement.
2022-04-09 11:10
theK

Registered: Oct 2020
Posts: 46
Awesome work! Most things works beautifully. It's just two things I've noticed;
1. When stepping in the "order list" (ctrl+, or .) while playing, it doesn't scroll to show the actual position.
2. When using a transpose in the "order list", like a +3 or something, you can't step back from before the transpose point.

I'm not sure if I'm clear enough. I can give you a .sng with these "problems" after Revision... ;-)

Cheers!
2022-04-09 14:34
Jason Page

Registered: Sep 2015
Posts: 87
That’s clear.
The code checks to see if you’re on a transpose or repeat, and if so, moves forward to the next. So that explains why it won’t go backwards.

Will look at the other issue too.
Thanks for spotting those
2022-04-10 06:28
acrouzet

Registered: May 2020
Posts: 91
Another question (aka poorly disguised feature request): is redo functionality planned?
2022-04-10 08:33
Jason Page

Registered: Sep 2015
Posts: 87
It's been mentioned, but it wasn't on todo list.
I'll keep it in mind. Redo hurts my head & i'm not 100% sure that my undo code will handle that easily (as in, I've forgotten how I wrote it...)
2022-04-10 09:18
Jason Page

Registered: Sep 2015
Posts: 87
re: 1. When stepping in the "order list" (ctrl+, or .) while playing, it doesn't scroll to show the actual position.


So, I can't see anywhere in the code tht uses ctrl , or . !
It uses ";" or ":" and that appears to work correctly?

What have I missed here?
2022-04-10 14:56
Adam

Registered: Jul 2009
Posts: 323
testing out the recent windows compile on windows10 (a few hours old going by the data on github).. noticed some issues:

1. fullscreen mode glitches the hell out if you switch to another application while in fullscreen (keeps flashing a black screen - rather violently - while hidden/minimized).

2. going into fullscreen doesn't work properly for me: pressing [alt]+[enter] - the application stops updating the window while continuing to play/run. does not enter fullscreen mode yet the config is updated to show that the mode was triggered. it will only recognize that it's in fullscreen mode when the program is closed and it reloads its config file.
2022-04-10 19:11
theK

Registered: Oct 2020
Posts: 46
Quote: re: 1. When stepping in the "order list" (ctrl+, or .) while playing, it doesn't scroll to show the actual position.


So, I can't see anywhere in the code tht uses ctrl , or . !
It uses ";" or ":" and that appears to work correctly?

What have I missed here?


I'm sorry! I've got it all mixed up.
It's shift + , and . = ; and : .

My apologies for the mixup, I got confused by the keyboard layout.
2022-04-10 21:24
Jason Page

Registered: Sep 2015
Posts: 87
Ah. I think I understand now.

So, I made this only update the display if Follow was enabled too. I did wonder if it should always update the display, but then thought that the exact same "problem" would occur, where someone wanted the display to not change when changing the play position.

Will think about this one. I'm away for a week, so there won't be any updates until next Saturday/Sunday now (if you post here, I'm not ignoring you!)
2022-04-10 21:25
Jason Page

Registered: Sep 2015
Posts: 87
Quote: I'm sorry! I've got it all mixed up.
It's shift + , and . = ; and : .

My apologies for the mixup, I got confused by the keyboard layout.


I've not touched the full screen code, compared to the original GTStereo (as far as I remember!). Do you see the same issues if using GTStereo too?
2022-04-10 21:32
Jason Page

Registered: Sep 2015
Posts: 87
Looks like this could be something that just isn't reliable anyway. Quick Google search found this thread:

https://www.lemon64.com/forum/viewtopic.php?t=63136&start=15&si..

With the comment:
> Alt-Enter, but you may not like what you see, or it may not be 100% reliable, as it will not expand the window, but perform a fullscreen mode switch to an oldschool (SVGA-like) resolution.


Does it work OK if you edit the GTUltra.cfg file instead?
Just change this from 0 to 1..

;Window type (0 = window, 1 = fullscreen)
0
2022-04-16 17:11
Jason Page

Registered: Sep 2015
Posts: 87
V1.1.3 version here: https://github.com/jpage8580/GTUltra/releases/tag/V1.1.3

I went for ctrl-Left / ctrl-Right to select previous / next position (emulating clicking the buttons on the transport bar) as the key to the left of "1" was already used, JCH.

If this version seems OK to everyone (no major crashes, etc) I'll release officially here.

Thanks for your help, all.
2022-04-16 17:27
theK

Registered: Oct 2020
Posts: 46
Quote: V1.1.3 version here: https://github.com/jpage8580/GTUltra/releases/tag/V1.1.3

I went for ctrl-Left / ctrl-Right to select previous / next position (emulating clicking the buttons on the transport bar) as the key to the left of "1" was already used, JCH.

If this version seems OK to everyone (no major crashes, etc) I'll release officially here.

Thanks for your help, all.


Thanks for this!
Installs good on Ubuntu.
Will test out functionality later. :-)
2022-04-21 16:22
tlr

Registered: Sep 2003
Posts: 1787
Is it just me or does the window scaling function no longer work (linux)?
I edit it to 2 in the config file (~/.goattrk/gt2stereo.cfg), but it get's reset to 1 on exit.

...or wait, after some fiddling: it loads gtultra.cfg, but writes gt2stereo.cfg... weird ass!
2022-04-24 11:48
Jason Page

Registered: Sep 2015
Posts: 87
I fixed the Linux gtstereo2.cfg recently. Not sure if I’ve updated it on GitHub though!
2022-04-24 13:39
tlr

Registered: Sep 2003
Posts: 1787
Quote: I fixed the Linux gtstereo2.cfg recently. Not sure if I’ve updated it on GitHub though!

HEAD seems to still be: c28467b4070c131ef70cc4e7ef6dc6c9d78efb9f

Tried 'make clean; make' but it still writes gt2stereo.cfg.

Not sure when you mean it was supposed to be fixed?
2022-04-24 18:49
Jason Page

Registered: Sep 2015
Posts: 87
I fixed it in my local version. Just haven’t updated GitHub
It’s just one line in gtstereo.c that needs fixing
2022-04-24 18:56
tlr

Registered: Sep 2003
Posts: 1787
Ah, I see. I misread your post slightly. Will wait for your next push then.
2022-04-24 19:20
Jason Page

Registered: Sep 2015
Posts: 87
Just pushed 1.1.5
2022-04-24 19:58
theK

Registered: Oct 2020
Posts: 46
Doesn't seem to save setting on exit on Linux on 1.1.5.
2022-04-24 20:42
tlr

Registered: Sep 2003
Posts: 1787
Quote: Doesn't seem to save setting on exit on Linux on 1.1.5.

Well, it load gtultra.cfg and saves gt2stereo.cfg. No change.
2022-04-24 20:44
theK

Registered: Oct 2020
Posts: 46
Unless I'm missing something I can only find that file in the win32 directory.
2022-04-24 20:46
tlr

Registered: Sep 2003
Posts: 1787
Quote: Unless I'm missing something I can only find that file in the win32 directory.

You're missing something. :)
The configuration is in ~/.goattrk/ (was already with the original gt2)
2022-04-24 20:56
theK

Registered: Oct 2020
Posts: 46
LOL! It's nothing unusual at all (that I miss something that is. ;-) ). Hmm, I'll have a look to see what I'm doing wrong.
2022-04-24 20:56
Jason Page

Registered: Sep 2015
Posts: 87
All I did was change the save filename. So hopefully it works.
But I only test on windows.
2022-04-24 20:58
theK

Registered: Oct 2020
Posts: 46
Yeah, it seems to save correctly in but for some reason it seems to refuse to load the settings on startup. :-/
2022-04-24 21:00
tlr

Registered: Sep 2003
Posts: 1787
Quote: All I did was change the save filename. So hopefully it works.
But I only test on windows.


Nope, not in what you pushed:
$ grep -i gt2stereo gt2stereo.c
				printtext(0, y++, getColor(15, 0), "Usage: GT2STEREO [songname] [options]");
	strcat(filename, "/gt2stereo.cfg");
$

Try:
$ git diff c28467b4070c131ef70cc4e7ef6dc6c9d78efb9f gt2stereo.c
2022-04-24 21:11
Jason Page

Registered: Sep 2015
Posts: 87
FFS

Pushed another.. Sorry about this.
2022-04-24 21:14
tlr

Registered: Sep 2003
Posts: 1787
Quote: FFS

Pushed another.. Sorry about this.


Super, works now!
2022-04-24 21:19
theK

Registered: Oct 2020
Posts: 46
There we go! Now it works! Thanks for all your hard work with this!
Also, I'm glad it wasn't me (this time ;-) ).
2022-04-24 21:42
Jason Page

Registered: Sep 2015
Posts: 87
You’re both credited in the GTUltra.pdf

I really appreciate the feedback.
2022-04-25 21:27
theK

Registered: Oct 2020
Posts: 46
It's still not possible to step back in the "orderlist" past a place where you have a transpose "like +3" with ";" or ":".
It way be by design, but still a bit strange. :-)
2022-04-26 21:59
Jason Page

Registered: Sep 2015
Posts: 87
Will look into it.
I tried to repro this before, but it seemed to work for me.
2022-04-27 08:08
theK

Registered: Oct 2020
Posts: 46
I'll try to replicate it and send you an .sng-file to show what I mean.
2022-05-12 19:43
theK

Registered: Oct 2020
Posts: 46
Hmm... I tried to compile (make) the latest version (1.2.0) in linux but got an error 1 "make: *** [<builtin>: gt2stereo.o] Error 1".
Did something change?
/K
2022-05-12 19:52
tlr

Registered: Sep 2003
Posts: 1787
Quote: Hmm... I tried to compile (make) the latest version (1.2.0) in linux but got an error 1 "make: *** [<builtin>: gt2stereo.o] Error 1".
Did something change?
/K


It's just that this line...
char filename[MAX_PATHNAME];
...got removed from the top of main() in commit a46a91455659f4c605334451af4f0f2f43877790.
2022-05-12 20:20
theK

Registered: Oct 2020
Posts: 46
@tlr: Yeah, I saw it now. Thanks, now it compiles.
But it seems to be something wrong with the themes, all I get is a black screen with a few blinking cursors. Is there a way to reset the theme?
/K
2022-05-12 22:48
Jason Page

Registered: Sep 2015
Posts: 87
Apologies. The filename[xxx] should no longer be required. I've pushed another update that just has the reference to this removed.

The new version doesn't use gtskin.bin files. Instead, it loads individual palettes from the gtpalette folder. If there's no palettes (or no folder), it should revert to a default palette which is stored in the .exe

I'm not seeing a black screen.
2022-05-12 23:01
Jason Page

Registered: Sep 2015
Posts: 87
I can get a black screen if I rename the gtpalette folder and then force the default palette not to load.

in gtstereo.c - at line 192, I load the default.gtp (palette) file, and then save it to disk under a temp random-ish name. I then use the same code that I use later to reload that file 16 times to fill the palettes 0-15 with the default. Finally, I delete the temp file. Not my finest hour - Hence the comment in the code:

// load the default palette from the WAD file and then save again to disk...Nasty. Sorry.


I can only presume that for some reason, this bit is failing for you.

Always worth deleting / renaming the .cfg file to see if that helps

EDIT: Just pushed another version which replaces that hacky saving code. Hopefully that works for you now
2022-05-13 17:37
theK

Registered: Oct 2020
Posts: 46
Sweet! Thanks a lot. Works like a charm now! :-)
2022-05-13 17:42
Jason Page

Registered: Sep 2015
Posts: 87
Excellent! Does the window resize (drag bottom right corner) and anti-aliased display work OK too?
If so, I’ll package this one up, along with some final palettes from Lman as an official release and post on csdb.
2022-05-13 17:46
theK

Registered: Oct 2020
Posts: 46
Awesome!

Yeah, resize and antialias seems to work. :-)

However there seems to be no default there's more than the original, pressing the "theme" button don't do anything. (Maybe by design?).
2022-05-13 17:48
Jason Page

Registered: Sep 2015
Posts: 87
Nope. That means I’ve broken something. It should pick up the palettes in the gtpalette folder and load them at startup

Can you confirm you’ve got a gtpalette folder with files in it within the same folder as your GTUltra.exe ?
2022-05-13 17:50
theK

Registered: Oct 2020
Posts: 46
Yes, in linux the binaries is in the /linux-folder and under there there's the /gtpalettes-folder with six files 0-5.
2022-05-13 18:09
Jason Page

Registered: Sep 2015
Posts: 87
OK... ANOTHER one pushed. Let me know how it goes!

I think the issue was that I had "\\" instead of "/" for file path separator. I've changed it to "/" in gpaletteeditor.c so that hopefully this now picks up all of the palette files
2022-05-13 18:13
theK

Registered: Oct 2020
Posts: 46
Hmm, no. Sorry. :-/ Still no theme change.

Looking to see if I can see what's going wrong? What did you change from 1.1.6?
2022-05-13 18:20
Jason Page

Registered: Sep 2015
Posts: 87
I'm sure it will be failing in the loadPalettes() method.

It checks to see if the gtpalette folder exists, and then gets the files in that folder via readdir, builds a final file path.
This then calls loadPalette(char *paletteName)

this loads the palette file and then calls readPaletteData(paletteMem); - which runs through the loaded data and sets RGB


readPaletteData is also called when loading the default palette - So this bit works. It has to be the file loaded - or how it's failing to find either the gtpalette folder or its contents where the problem is
2022-05-13 18:37
tlr

Registered: Sep 2003
Posts: 1787
This happens:
$ gtultra
Unable to read directory: No such file or directory
$
(regardsless of where I'm standing)
2022-05-13 18:42
Jason Page

Registered: Sep 2015
Posts: 87
So, that's in loadPalettes, as suspected:


createFilename(appFileName, paletteFile, "gtpalettes");

folder = opendir(paletteFile);
if (folder == NULL)
{
jdebug[0] = 0xff;
perror("Unable to read directory");



It works for windows (or at least, for me and Lman!)
maybe for linux, it needs another "\" at the end of "gtpalettes"?
2022-05-13 18:44
tlr

Registered: Sep 2003
Posts: 1787
did a little printf() debugging, appFileName is '/home/tlr/.goattrk/gtultra.cfg' on my system...
2022-05-13 18:49
Jason Page

Registered: Sep 2015
Posts: 87
createFilename looks backwards through that string until it finds a / or \. It then and adds the new filename (or folder) at that point (basically, replacing the gtultra.cfg text with the new string)

Changing the perror to the following show show the folder it's trying to open..

perror(paletteFile);
2022-05-13 18:50
Jason Page

Registered: Sep 2015
Posts: 87
printf does nothing when i'm using windows cmd window to build - which is the reason that debugging this whole thing has been a f**king nightmare!
2022-05-13 18:53
tlr

Registered: Sep 2003
Posts: 1787
Quote: printf does nothing when i'm using windows cmd window to build - which is the reason that debugging this whole thing has been a f**king nightmare!

Yes, windows is usually resisting development activities. :)

But, point being is that appFileName is not used as appFileName, it is used as cfgFileName, hence you will search the palettes relative to where the configuration file is located. Place gtpalettes/ in $HOME/.goattrk/ and it will work using the current code.

EDIT: then it loads them, but switching does seem to work anyway... ?
2022-05-13 19:02
Jason Page

Registered: Sep 2015
Posts: 87
>Yes, windows is usually resisting development activities. :)

I'm a bit of a dick. I piped the output to a file, and I can see printf's... I'll be doing that more from now on!

I'm a bit confused!...

>But, point being is that appFileName is not used as appFileName, it is used as cfgFileName, hence you will search the palettes relative to where the configuration file is located.

Yes - the gtpalette folder should be within the same folder as gtUltra.exe AND the .cfg file.. Which is why the createfile code removes the gtultra.cfg and replaces it with gtpalette.. And then from there it adds "/"+filename of palette[n] to load each one..


That's what should happen - and it does under windows.
2022-05-13 19:07
tlr

Registered: Sep 2003
Posts: 1787
Quoting Jason Page
Yes - the gtpalette folder should be within the same folder as gtUltra.exe AND the .cfg file.. Which is why the createfile code removes the gtultra.cfg and replaces it with gtpalette.. And then from there it adds "/"+filename of palette[n] to load each one..


That's what should happen - and it does under windows.

The config file is under $HOME/.goattrk/ on linux as it has always been. The binary isn't in the same directory. dirname(cfgFileName) != dirname(appFileName) for all platforms.

But, it still doesn't work if I copy it there. There are several issues. You still got a "\\" in loadPalettes(). You do "rb" of the palette (a text file) in loadPalette() and the hand parse that in readPaletteData() which is bound to fail on some configurations (CR/LF vs LF for instance).
2022-05-13 19:16
Jason Page

Registered: Sep 2015
Posts: 87
I wasn't aware that the cfg wasn't in the same location as the exe in linux...hmm


I do rb, as the default file is stored as binary in the large datafile. So reading the text file should be taken care of, once it actually loads into RAM.
I do a check for LF, etc - it's the code that I use to parse the default palette, which I modified to work with the binary data (it doesn't check for "\n", for example - it checks for 0xd... But we're going off track, I think.. take a look at sgets - I added a comment when I wrote it:

/*
Had to modify this to handle \n manually due to not being able to open "rt".
I add a 0 at the end of the loaded file buffer as a terminator.
I then check for <=0xd for a carriage return to cover 0xd,0xa combinations, rather than =='\n'
*/


This is what I get when running on windows: So the parsing of the binary works.

https://www.dropbox.com/s/ks63dxl2hx1q159/GoatTracker%20Ultra%2..
2022-05-13 20:00
theK

Registered: Oct 2020
Posts: 46
For linux to get to folders there is "./gtpalettes/0_default.gtp".
2022-05-13 20:02
tlr

Registered: Sep 2003
Posts: 1787
Quote: I wasn't aware that the cfg wasn't in the same location as the exe in linux...hmm


I do rb, as the default file is stored as binary in the large datafile. So reading the text file should be taken care of, once it actually loads into RAM.
I do a check for LF, etc - it's the code that I use to parse the default palette, which I modified to work with the binary data (it doesn't check for "\n", for example - it checks for 0xd... But we're going off track, I think.. take a look at sgets - I added a comment when I wrote it:

/*
Had to modify this to handle \n manually due to not being able to open "rt".
I add a 0 at the end of the loaded file buffer as a terminator.
I then check for <=0xd for a carriage return to cover 0xd,0xa combinations, rather than =='\n'
*/


This is what I get when running on windows: So the parsing of the binary works.

https://www.dropbox.com/s/ks63dxl2hx1q159/GoatTracker%20Ultra%2..


I did see the comment, but I'm thinking unless you tested it on the relevant configurations, there are many things that can go wrong.

When I put the gtpalettes dir with the config file and fixed the "\\" it seemed to do loadPalette() on all files, but no palettes appeared in the gui. No error messages.
2022-05-13 20:13
Jason Page

Registered: Sep 2015
Posts: 87
@theK

Thanks. I'll change the code to do this path... But are you seeing the same problem as tlr - the palette's still aren't changing?


Possibly worth seeing if the actual palette load is failing in loadPalette() (it also has a nice comment saying that I knew the RT thing was going to be a pain..:-) )


FILE *handle = fopen(paletteName, "rb"); // Have to use RB instead of RT as the default file is within the binary wad..grrr
if (handle == NULL)
{
2022-05-13 20:18
tlr

Registered: Sep 2003
Posts: 1787
After some more printf() debugging I can see that it's sgets() that does not work correctly with LF line endings.

If I crudely change this:
if (**strp == 0xd){
    s[i] = '\n';

into this:
if (**strp == 0xa){
    s[i] = '\n';
it works with LF (but of course not with CR/LF anymore).

Should be easy enough to verify on your platform with an LF only file as you do a binary read.
2022-05-13 20:21
theK

Registered: Oct 2020
Posts: 46
Yeah, as tlr, I get the "/gtultra
Unable to read directory: No such file or directory"

This indicates that it's searching in the wrong folders. :-(
2022-05-13 20:24
Jason Page

Registered: Sep 2015
Posts: 87
what confuses me is that I know that these files have 0xd,0xa as LF,CF - I can see it in a hex editor, and I'm loading in binary, so this should stay the same. So the code that is there already should handle this correctly...What have I missed here?!
2022-05-13 20:26
tlr

Registered: Sep 2003
Posts: 1787
Quote: what confuses me is that I know that these files have 0xd,0xa as LF,CF - I can see it in a hex editor, and I'm loading in binary, so this should stay the same. So the code that is there already should handle this correctly...What have I missed here?!

You are missing that they are text files. git cloning text files will yield native line endings on the platform the clone is performed on.
2022-05-13 20:48
Jason Page

Registered: Sep 2015
Posts: 87
Hah!
Yes, I missed that!
I had no idea that GIT would mess around with file data! I thought the rb / me parsing the data should mean that the data is 100% the same for you as it is for me. That's pretty shocking... However, how does GIT know that they're text files? Just by a binary search? Surely that's really dangerous? it could just decide that something is a text file, even though it wasn't?...Time for a google search..


(Likelyhood is that I'll ditch the text format and revert to at least having binary data for palette files..)
2022-05-13 20:54
Jason Page

Registered: Sep 2015
Posts: 87
Also - I just wanted to say that I REALLY appreciate your help here!

Thank you
2022-05-13 20:58
Jason Page

Registered: Sep 2015
Posts: 87
@tlr - OK, so now I understand what's going wrong (I'm blaming GIT here ;) - When you change the check to 0xa, that should then fix everything... But you're still not getting different palettes?

EDIT: Is it possible for you to upload one of the .gtp files to here:

https://www.dropbox.com/scl/fo/1vaevbxbohrmzxghyhxg2/h?dl=0&rlk..

Would like to just verify that my changes to the text parser works.

Thanks!
2022-05-13 21:08
tlr

Registered: Sep 2003
Posts: 1787
Quoting Jason Page
I had no idea that GIT would mess around with file data! I thought the rb / me parsing the data should mean that the data is 100% the same for you as it is for me. That's pretty shocking...
Well, if it didn't convert it would be a horrible pain to work on the same code from two different platforms.

Quoting Jason Page
However, how does GIT know that they're text files? Just by a binary search? Surely that's really dangerous? it could just decide that something is a text file, even though it wasn't?...Time for a google search..

I guess that is something Mr Torvalds has to explain. :)
Text file conversion to native line endings is the default in most revision control tools but commonly you have to explicitly tell the tools when to treat files as binaries. Git does it automatically.

Quoting Jason Page
@tlr - OK, so now I understand what's going wrong (I'm blaming GIT here ;) - When you change the check to 0xa, that should then fix everything... But you're still not getting different palettes?

with my crude tweaks I get different palettes, yes.

EDIT: files here: gtpalettes.zip (unless zip converts them too :)
2022-05-13 21:13
Jason Page

Registered: Sep 2015
Posts: 87
I can't download for some reason... The gods of code hate me today. can you copy to that dropbox folder?


EDIT: Ignore that. Chrome wasn't happy. Edge (urgh...) complained but eventually gave me the file. Thanks
2022-05-13 21:20
Jason Page

Registered: Sep 2015
Posts: 87
Super..
So, changing the magic line to:


if ((**strp == 0xa) || (**strp == 0xd))
{


Allows for both to work.
Apart from that change, what else did I need to change so that it compiles / works out of the box? Was there a change to the file path too?

I'll commit that change anyway ^^^
2022-05-13 21:23
tlr

Registered: Sep 2003
Posts: 1787
Quote: Super..
So, changing the magic line to:


if ((**strp == 0xa) || (**strp == 0xd))
{


Allows for both to work.
Apart from that change, what else did I need to change so that it compiles / works out of the box? Was there a change to the file path too?

I'll commit that change anyway ^^^


You need to separate the concept of the path to the binary/installation from the concept of the path to the config file.
Also there was a "\\" in loadPalettes() that needs to be "/".
2022-05-13 21:25
Jason Page

Registered: Sep 2015
Posts: 87
Yeah, I fixed the // to \ thing before. I think you missed that push. Hopefully what's there works now?
2022-05-13 21:29
tlr

Registered: Sep 2003
Posts: 1787
Quote: Yeah, I fixed the // to \ thing before. I think you missed that push. Hopefully what's there works now?

Assuming I copy the gtpalettes directory to the config directory it seems to work. Can't say if the actual themes are 100% like intended, but they are all different.
2022-05-13 21:31
Jason Page

Registered: Sep 2015
Posts: 87
Should match what was in the video link I posted earlier
2022-05-13 21:34
theK

Registered: Oct 2020
Posts: 46
Just got back, you guys are hard at work! :-O

Latest build still get "./gtultra
/home/xxx/.goattrk/gtpalettes: No such file or directory"

It goes to the wrong folder. The gtpallets is in the "binary" folder, not the config one.
2022-05-13 21:40
Jason Page

Registered: Sep 2015
Posts: 87
I'm going to change the code so that it looks for gtpalette folder in $HOME/.goattrk/

Please confirm this is correct
2022-05-13 21:58
tlr

Registered: Sep 2003
Posts: 1787
Quote: I'm going to change the code so that it looks for gtpalette folder in $HOME/.goattrk/

Please confirm this is correct


This is what it does now. It sort of makes sense, because it is configuration after all. The issue is that there is no gtpalettes/ folder there when starting up the first time. Either you have the palettes looked up where the binary is, or you write out the initial defaults to $HOME/.goattrk if no gtpalettes exist.

The latter is the nicest IMO.
2022-05-13 22:09
Jason Page

Registered: Sep 2015
Posts: 87
Gotcha. Thanks

Laptop battery is dead. Will look at this again tomorrow.
2022-05-13 22:21
Jason Page

Registered: Sep 2015
Posts: 87
Quote: For linux to get to folders there is "./gtpalettes/0_default.gtp".

One last question - just so I understand linux a little better!

Is this path we’re the palettes are currently stored?if the code just referenced “./gtpalettes/“ folder, it would find them?

So far, I’m clear on where the palette is currently trying to load from (cfg location..). But not where it actually is by default.
2022-05-14 09:58
Jason Page

Registered: Sep 2015
Posts: 87
Ignore that question as it’s not relevant to my solution:

1. I’ll add all default palettes to the large data file. So they all load by default at stat-up - just as the single default palette currently does.
2. I’ll modify the code to create a gtpalettes folder if it doesn’t already exist.
3. Users can then place new / saved palettes in this folder, and they will be loaded at start-up after the default palettes.


(Lman has created some excellent skins, which I still need to add as the defaults)
2022-05-14 11:38
tlr

Registered: Sep 2003
Posts: 1787
Quote: Ignore that question as it’s not relevant to my solution:

1. I’ll add all default palettes to the large data file. So they all load by default at stat-up - just as the single default palette currently does.
2. I’ll modify the code to create a gtpalettes folder if it doesn’t already exist.
3. Users can then place new / saved palettes in this folder, and they will be loaded at start-up after the default palettes.


(Lman has created some excellent skins, which I still need to add as the defaults)


Seems like a good solution.

I noticed that the palettes are in a different order than in your example video. If you are not sorting the entries you'll get whatever order the filesystem happens to have. I'm guessing that's what happens.

(answer to question to be ignored: no ./ will always relate to where you are standing when starting the program. If not, eg 'ls .' would list the files where the ls binary is located)
2022-05-14 12:18
Jason Page

Registered: Sep 2015
Posts: 87
For windows at least, it was loading the files in alphabetical order automatically. I hoped that would be the same for Linux too.
For the defaults, it will always be in a specific order now, as I’m c”generating the file name to load in a loop,
2022-05-14 12:22
tlr

Registered: Sep 2003
Posts: 1787
Quote: For windows at least, it was loading the files in alphabetical order automatically. I hoped that would be the same for Linux too.
For the defaults, it will always be in a specific order now, as I’m c”generating the file name to load in a loop,


I don't think POSIX guarantees any specific order for readdir(). For ext4 my guess is that you'll get the files in inode order. For NTFS, not sure. Could be in the order written perhaps?
2022-05-14 12:25
Jason Page

Registered: Sep 2015
Posts: 87
I did wonder if that would be the case.
I Will look at saving the filename of the current palette in the cfg, rather than index.
It can then look through and do a string compare to use the correct palette on start-up
2022-05-14 16:39
theK

Registered: Oct 2020
Posts: 46
Hmm, there seems to be an error in the latest build.
---
gpaletteeditor.c: In function ‘loadPalettes’:
gpaletteeditor.c:782:17: error: too few arguments to function ‘mkdir’
782 | mkdir(paletteFile); // default palette folder didn't exist in config file location. It now does..
| ^~~~~
In file included from goattrk2.h:10,
from gpaletteeditor.c:7:
/usr/include/x86_64-linux-gnu/sys/stat.h:389:12: note: declared here
389 | extern int mkdir (const char *__path, __mode_t __mode)
| ^~~~~
make: *** [<builtin>: gpaletteeditor.o] Error 1

---
2022-05-14 17:44
Jason Page

Registered: Sep 2015
Posts: 87
Grrr..

mkdir for linux requires permission flags too.

I've changed the line for linux to:

mkdir(paletteFile, 0777);


Please try again!
2022-05-14 17:49
theK

Registered: Oct 2020
Posts: 46
But... Am I thinking the wrong way here... Do you really need to create the folder if you make sure it's already there in the .zip with the content?
2022-05-14 17:51
theK

Registered: Oct 2020
Posts: 46
Never mind. Now it compiles fine. And the themes work! \o/

Good job!
2022-05-14 18:02
Jason Page

Registered: Sep 2015
Posts: 87
The folder allows you to place your own modified palettes in there and they will also load on startup. Glad it’s finally working!

Sorry for the chaos.
2022-05-17 12:46
hedning

Registered: Mar 2009
Posts: 4720
GTUltra V1.2.0
2022-05-22 08:52
Jason Page

Registered: Sep 2015
Posts: 87
I pushed some changes since 1.2.0 release


- FIXED: splitting/joining/expanding/shrinking patterns would not work correctly if follow was enabled.
- NEW: 3 channel pattern display (single SID or 3 SID channels 7-9) expands to fill more of the screen, similar to the original GT layout.
2022-05-22 16:42
tlr

Registered: Sep 2003
Posts: 1787
Good work!

Suggestion:
It would be cool if the lighter/darker highlighting steps could be set individually for use with odd meters, like 3 + 4 or 3 + 2 and similar.
2022-05-22 23:44
Silver Dream !

Registered: Nov 2005
Posts: 108
Does the latest (1.2.0) build on macos?
2022-05-23 21:37
Jason Page

Registered: Sep 2015
Posts: 87
It has only been built and tested on Windows and Linux. I haven’t got the knowledge to build for Mac,I’m afraid.
2022-05-23 22:51
chatGPZ

Registered: Dec 2001
Posts: 11350
If it works in Linux, chances are high it will compile in macOS too - just try it :)
2022-05-23 22:56
hedning

Registered: Mar 2009
Posts: 4720
Apple is the main enemy of Commodore, mind you. :P
2022-05-24 14:09
MuZZa

Registered: Nov 2020
Posts: 16
Hi friends, i made this on my Mac Mojave (10.14.6) to run GTUltra 1.2.0 (the program runs fine, all in Resid, at least what I've tested, since I'm not a composer I can't test it thoroughly) I can mail the files if anyone wanna test it):

1) brew install sdl2

2) brew install pkg-config (I remove anyway the alsa pkg from the Makefile).

3)
Add the "-std=c++11" (Apparently, you need to specify that the compiler should use C++11 with the Catch2 c++ framework) in the makefile.common config file:

CXXFLAGS+=$(CFLAGS) -fpermissive -std=c++11

4)
Modify the Makefile like this:

#
# MAC makefile
#

CFLAGS+=`sdl2-config --cflags`
PREFIX=../mac/
SUFFIX=
LIBS+=`sdl2-config --libs` -lpthread

include makefile.common

5)
Since i receive this error:

cc `sdl2-config --cflags` -Ibme -Iasm -O3 -c -o gundo.o gundo.c
gundo.c:508:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
1 warning generated.
cc `sdl2-config --cflags` -Ibme -Iasm -O3 -c -o gchareditor.o gchareditor.c
c++ `sdl2-config --cflags` -Ibme -Iasm -O3 -fpermissive -std=c++11 -c -o RtMidi.o RtMidi.cpp
RtMidi.cpp:359:14: error: virtual function 'initialize' has a different return type ('unsigned int') than the function
it overrides (which has return type 'void')
unsigned int initialize(const std::string& /*clientName*/) {}
~~~~~~~~~~~~ ^
./RtMidi.h:554:22: note: overridden virtual function is here
virtual void initialize(const std::string& clientName) = 0;
~~~~ ^
1 error generated.
make: *** [RtMidi.o] Error 1

I change the return type for void instead of "unsigned int".

The complete final dump: 8 Warnings no errors.
2022-05-29 13:00
theK

Registered: Oct 2020
Posts: 46
Just a few findings...

1. The "keyboard visualiser" seems to get stuck sometimes, esp. with 2SID tunes. No biggie, it's just for show.

2. When jumping in the orderlist the cursor jumps to the top of the patterns. This is a bit annoying since I usually go back and forth to see what I've done in the previous position.

3. I may have mentioned this before... But in the orderlist this highlighted and played position is the last one, i.e. you can't see what the next one will be. It would be helpful to see at least the next one.

All for now. ;-)

And thanks for all your hard work with this great tool!
2022-05-29 16:10
Jason Page

Registered: Sep 2015
Posts: 87
re: 3. I may have mentioned this before... But in the orderlist this highlighted and played position is the last one, i.e. you can't see what the next one will be. It would be helpful to see at least the next one.


You mean that when it updates the position when follow is enabled, the right most position is the playing one.. You'd like to it scroll one pattern earlier?

Thanks for the feedback & compliments. Not sure what could be happening with the keyboard display. Will try to repro (and then fix). But if you've any sngs which show this easily, let me know.

- And thanks also to MuZZa for his superb Mac help!

Cheers
Jason
2022-05-29 19:54
theK

Registered: Oct 2020
Posts: 46
Quote: re: 3. I may have mentioned this before... But in the orderlist this highlighted and played position is the last one, i.e. you can't see what the next one will be. It would be helpful to see at least the next one.


You mean that when it updates the position when follow is enabled, the right most position is the playing one.. You'd like to it scroll one pattern earlier?

Thanks for the feedback & compliments. Not sure what could be happening with the keyboard display. Will try to repro (and then fix). But if you've any sngs which show this easily, let me know.

- And thanks also to MuZZa for his superb Mac help!

Cheers
Jason


Yeah, it's hard to describe. But the highighted bar in the orderlist is at furthest right. If it was second to last it would be easier to see what the next one will be.

Like this...
_______________________\/
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A

If instead it was...

____________________\/
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A

It would be easier. :-)

--

As for the keyboard it seems like it is when playing really high pitched notes, like DC, DD or DF... It doesn't seem to happen with "normal" notes.

I'm not sure if I made it more confusing now... X-D
2022-05-29 20:59
Jason Page

Registered: Sep 2015
Posts: 87
Thanks for this.
I’ll do some tests with high notes / scales to see what’s going on.
Will also look at those other points too.
2022-05-29 23:10
Jason Page

Registered: Sep 2015
Posts: 87
Fixed the keyboard high notes.
Also fixed a few other minor things whilst looking into how best to not reset the pattern pos when changing song pos.
2022-05-30 14:45
Jason Page

Registered: Sep 2015
Posts: 87
Made the changes to preserve pattern editing position when selecting a different pattern / song position.

Made the change to scroll order list one pattern earlier, so you can see the next pattern (based on the master loop channel position)

So, that should be everything that you requested.
2022-05-30 19:18
Raf

Registered: Nov 2003
Posts: 343
Is it intentional that F2 or so (F3 maybe) works differently than in original GT? I mean on original GT I could highlight entries in orderlist and start songs from that point and it doesn't work that way in GTU.
2022-05-30 19:58
theK

Registered: Oct 2020
Posts: 46
Quote: Made the changes to preserve pattern editing position when selecting a different pattern / song position.

Made the change to scroll order list one pattern earlier, so you can see the next pattern (based on the master loop channel position)

So, that should be everything that you requested.


Yes! Seems to work as intended! Thanks for the swift help! :-)
2022-05-30 21:06
Jason Page

Registered: Sep 2015
Posts: 87
Quote: Is it intentional that F2 or so (F3 maybe) works differently than in original GT? I mean on original GT I could highlight entries in orderlist and start songs from that point and it doesn't work that way in GTU.

Yea it’s intentional.
F3 basically does everything (play from current position)
F2 enables/disables looping or follow.
F1 a play from start.
2022-05-31 19:22
theK

Registered: Oct 2020
Posts: 46
Just found a tiny glitch.
The there's no key repeat on the export to SID file selector. :-)
2022-05-31 20:04
Jason Page

Registered: Sep 2015
Posts: 87
If that’s as bad as it gets, I’ll take that as a win :-)

Will look at that one later.
I’ve also got to update it to handle building on Mac using MuZZa’s solutions.

I’m also looking at adding an expanded order list view. It will display vertically instead of horizontally, each step showing the pattern and transpose value. And with all repeats unrolled.
I might also colour code patterns (user can set pattern colours). So that could be easier to see, say, drum patterns vs leads. Or verse vs chorus.

… and then it’s time to look at samples.
2022-05-31 20:11
theK

Registered: Oct 2020
Posts: 46
Quoting Jason Page

… and then it’s time to look at samples.

😮
I volunteer as beta tester! 😜
2022-09-25 13:02
Jason Page

Registered: Sep 2015
Posts: 87
GTUltra 1.3.0

I've just released this on GitHub.

https://github.com/jpage8580/GTUltra/releases/tag/V1.3.0

I'll create a CSDB-friendly release once it's had a bit of user testing.

Features:

- Expanded Order List editing
- True Stereo Panning (15 positions) per instrument (emulation only)
- Definable SID Chip Pan positions (eg. place the 3rd SID in the center!)
- Automatic regular .sng backups (user definable duration between saves)
- Inter-pattern (marked area) looping is now optional
- Optional “Classic” F1-F3 key use (shift-click on record button to enable)
- Improved 6502 code for 9 and 12 channel SIDs for simpler playback (no more hackery of syncing 2 .SID files)
- SID emulation now disabled when seeking to start position (the delay was noticeable and annoying)
- Option to fully disable MIDI within .cfg file (set port to 9999)
- Editor settings are now saved in .sng files (FV, PO, RO, NTSC/PAL, SID Type, HR Value, Speed, # SIDs, Stereo mode)
2024-01-04 09:42
manganoid

Registered: Jan 2021
Posts: 8
Hi guys, is there a way to use GTUltra on MacOS 12 (on MacBook Air with Intel i5 CPU)? I successfully managed to run GT2 on it but GTUltra has some features that are very useful to me. Huge thanks in adavnce.
2024-01-06 16:07
Richard

Registered: Dec 2001
Posts: 621
Just a thought. How about built in a SID depacker? in which can load and unpack SID (or PRG) versions of tunes made in Goat Tracker back to to GoatTracker Ultra? In the past I wrote many tunes, but some I wrote using Goat Tracker got lost in 2021 after a serious PC crash, which affected my backup files.
2024-01-07 00:01
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: Just a thought. How about built in a SID depacker? in which can load and unpack SID (or PRG) versions of tunes made in Goat Tracker back to to GoatTracker Ultra? In the past I wrote many tunes, but some I wrote using Goat Tracker got lost in 2021 after a serious PC crash, which affected my backup files.

there is a tool called sid2sng made by 2bt which does just that. turns sid files made in goattracker back to sng files
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Ejner/inZane
t0m3000/hf^boom!^ibx
juN3bula/N3U
Kimono
Guests online: 114
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 Uncensored  (9.6)
7 Wonderland XIV  (9.6)
8 Comaland 100%  (9.6)
9 No Bounds  (9.6)
10 Christmas Megademo  (9.5)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Libertongo  (9.5)
6 Rainbow Connection  (9.5)
7 Onscreen 5k  (9.5)
8 Morph  (9.5)
9 Dawnfall V1.1  (9.5)
10 It's More Fun to Com..  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Nostalgia  (9.3)
5 Censor Design  (9.3)
Top Logo Graphicians
1 t0m3000  (10)
2 Sander  (9.8)
3 Mermaid  (9.5)
4 Facet  (9.4)
5 Shine  (9.4)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.3 sec.