Seite 1 von 1

Source von Night Knight

Verfasst: 09.04.2024 22:12
von LarsImNetz
Die aktuelle Night Knight Version im Source

https://github.com/the-atari-team/tat.night-knight.git

Freiwillige vor!
Wer traut sich es mal zu pullen und zu bauen.

Linux oder Windows mit MinGW, vielleicht auch Mac.
* braucht Java 11, oder 17, vielleicht 21.
Dann einfach "make init" und wenn das geht, dann "make start"

Re: Source von Night Knight

Verfasst: 26.04.2024 15:55
von bspautz
Ich :D

...melde mich...

Lieben Gruß
Bernd

Re: Source von Night Knight

Verfasst: 29.04.2024 09:33
von Dinadan
Das sieht auf meinem iMac gar nicht so schlecht aus, "atari800" und "atasm" kann man mit Homebrew installieren, dann noch "ATARIXL.ROM" in ../firmware kopiert und den Pfad um compiler/bin ergänzt: "make init" läuft dann durch und mit "make" kann man versuchen zu bauen. Leider steigt das ganze dann mit einem obskuren Fehler im Assembler aus. Da ich mich mit atasm so gar nicht auskenne, bin ich etwas ratlos:

Code: Alles auswählen

HHROTOSC0101:tat.night-knight dj$ make
wnfc night-knight.wnf '-O' 3 '-smallHeapPtr' -showvariableusage -I library -I library/tests-utils
WARN  Parameter for small Heap Pointer is given, we use only byte wide size heap!
WARN  Make sure your Heap_Ptr starts at equal word address! See RUNTIME.INC
INFO  Parameter for variable usage is given, see how often each variable is used.
ERROR Given path library/tests-utils does not exist.
INFO  Read file: 'night-knight.wnf'
INFO  Check for header file: 'header.wnf'
INFO  Found a 'header.wnf' file, read it first.
INFO  compile
INFO  set variable GAME_MODE from header.
INFO  set variable SHOW_SCREEN from header.
INFO  set variable PM_BASE_ADDR from header.
INFO  set variable NEW_LIVE_AT_SCORE from header.
INFO  set variable NEW_LIVE_AT_SCORE_IN_SIMPLE from header.
INFO  set variable NEW_LIVE_AT_SCORE_IN_GODMOD from header.
INFO  set variable PLAYFIELD_SCREEN from header.
INFO  set variable MESSAGE_SCREEN from header.
INFO  set variable INTRO_SCREEN from header.
INFO  set variable OUTRO_SCREEN from header.
INFO  set variable SPEED_50 from header.
INFO  set variable SPEED_66 from header.
INFO  set variable SPEED_75 from header.
INFO  set variable SPEED_80 from header.
INFO  set variable SPEED_85 from header.
INFO  set variable SPEED_90 from header.
INFO  set variable SPEED_95 from header.
INFO  set variable SPEED_98 from header.
INFO  set variable MODE_INTRO from header.
INFO  set variable MODE_PLAY from header.
INFO  set variable MODE_GAME_OVER from header.
INFO  set variable MODE_ABBRUCH from header.
INFO  set variable MODE_LOST_LIVE from header.
INFO  set variable MODE_LEVEL_DONE from header.
INFO  set variable MODE_OUT_OF_TIME from header.
INFO  set variable MODE_NO_MORE_LIVES from header.
INFO  set variable DIRECTION_STAY_LOOK_RIGHT from header.
INFO  set variable DIRECTION_STAY_LOOK_LEFT from header.
INFO  set variable DIRECTION_WALK from header.
INFO  set variable DIRECTION_WALK_RIGHT from header.
INFO  set variable DIRECTION_WALK_LEFT from header.
INFO  set variable DIRECTION_JUMP from header.
INFO  set variable DIRECTION_JUMP_RIGHT from header.
INFO  set variable DIRECTION_JUMP_LEFT from header.
INFO  set variable DIRECTION_DEAD from header.
INFO  set variable DIRECTION_DEAD_RIGHT from header.
INFO  set variable DIRECTION_DEAD_LEFT from header.
INFO  set variable DIRECTION_BLOW_AWAY from header.
INFO  set variable MAX_SPRITES from header.
INFO  set variable MAX_ENEMIES from header.
INFO  set variable WALL_1 from header.
INFO  set variable WALL_2 from header.
INFO  set variable BACKGROUND_DASH_1 from header.
INFO  set variable BACKGROUND_DASH_2 from header.
INFO  set variable BACKGROUND_DASH_3 from header.
INFO  set variable BACKGROUND_DASH_4 from header.
INFO  set variable FLOOR_YELLOW_1 from header.
INFO  set variable FLOOR_YELLOW_2 from header.
INFO  set variable FLOOR_1 from header.
INFO  set variable FLOOR_2 from header.
INFO  set variable DOOR_CLOSED_1 from header.
INFO  set variable DOOR_CLOSED_2 from header.
INFO  set variable DOOR_CLOSED_3 from header.
INFO  set variable DOOR_CLOSED_4 from header.
INFO  set variable DOOR_CLOSED_5 from header.
INFO  set variable DOOR_CLOSED_6 from header.
INFO  set variable DOOR_OPENED_1 from header.
INFO  set variable DOOR_OPENED_2 from header.
INFO  set variable DOOR_OPENED_3 from header.
INFO  set variable DOOR_OPENED_4 from header.
INFO  set variable DOOR_OPENED_5 from header.
INFO  set variable DOOR_OPENED_6 from header.
INFO  set variable KEY_1 from header.
INFO  set variable KEY_2 from header.
INFO  set variable BODEN_MESSER_1 from header.
INFO  set variable BODEN_MESSER_2 from header.
INFO  set variable BODEN_MESSER_1HI from header.
INFO  set variable BODEN_MESSER_2HI from header.
INFO  set variable ELEVATOR_1 from header.
INFO  set variable ELEVATOR_2 from header.
INFO  set variable ELEVATOR_3 from header.
INFO  set variable ELEVATOR_4 from header.
INFO  set variable ELEVATOR_5 from header.
INFO  set variable ELEVATOR_6 from header.
INFO  set variable SANDCLOCK_1 from header.
INFO  set variable SANDCLOCK_2 from header.
INFO  set variable SANDCLOCK_3 from header.
INFO  set variable SANDCLOCK_4 from header.
INFO  set variable STOPWATCH_1 from header.
INFO  set variable STOPWATCH_2 from header.
INFO  set variable STOPWATCH_3 from header.
INFO  set variable STOPWATCH_4 from header.
INFO  set variable SHIELD_1 from header.
INFO  set variable SHIELD_2 from header.
INFO  set variable SHIELD_3 from header.
INFO  set variable SHIELD_4 from header.
INFO  set variable GEMS_1 from header.
INFO  set variable GEMS_2 from header.
INFO  set variable GEMS_3 from header.
INFO  set variable GEMS_4 from header.
INFO  set variable GAME_SCREEN from header.
INFO  set variable SCORE_TEXT from header.
INFO  set variable XOFFSET from header.
INFO  set variable THE_DUDE from header.
INFO  set variable KEY from header.
INFO  set variable DOOR from header.
INFO  set variable SANDCLOCK from header.
INFO  set variable SHIELD from header.
INFO  set variable GEMS from header.
INFO  set variable STOPWATCH from header.
INFO  set variable E_SKELETON from header.
INFO  set variable E_ARCHER from header.
INFO  set variable E_DARK_KNIGHT from header.
INFO  set variable E_GHOST from header.
INFO  set variable E_VAMPIRE from header.
INFO  set variable E_WIZARD from header.
INFO  set variable E_WERWOLF from header.
INFO  set variable E_CAT from header.
INFO  set variable IDX_SKELETON from header.
INFO  set variable IDX_ARCHER from header.
INFO  set variable IDX_DARK_KNIGHT from header.
INFO  set variable IDX_GHOST from header.
INFO  set variable IDX_VAMPIRE from header.
INFO  set variable IDX_WIZARD from header.
INFO  set variable IDX_WERWOLF from header.
INFO  set variable IDX_CAT from header.
INFO  set variable IDX_ARROW from header.
INFO  set variable IDX_BAT from header.
INFO  set variable IDX_BLOW from header.
INFO  set variable ANIM_JUMP_UP from header.
INFO  set variable ANIM_JUMP_DOWN from header.
INFO  set variable ANIM_END from header.
INFO  set variable COLOR_SKELETON from header.
INFO  set variable COLOR_ARCHER from header.
INFO  set variable COLOR_DARK_KNIGHT from header.
INFO  set variable COLOR_GHOST from header.
INFO  set variable COLOR_VAMPIRE from header.
INFO  set variable COLOR_WIZARD from header.
INFO  set variable COLOR_WERWOLF from header.
INFO  set variable COLOR_CAT from header.
INFO  set variable COLOR_ARROW from header.
INFO  set variable COLOR_BAT from header.
INFO  set variable COLOR_BLOW from header.
INFO  set variable @NTSC_COLOR_ADD from header.
INFO  set variable DUDE_COLOR_P1 from header.
INFO  set variable DUDE_COLOR_P2 from header.
INFO  set variable COLOR_DUDE_P1_PAL from header.
INFO  set variable COLOR_DUDE_P2_PAL from header.
INFO  set variable COLOR_DUDE_P1_NTSC from header.
INFO  set variable COLOR_DUDE_P2_NTSC from header.
INFO  set variable COLOR_YELLOW_PAL from header.
INFO  set variable COLOR_YELLOW_NTSC from header.
INFO  set variable COLOR_WHITE from header.
INFO  set variable COLOR_PW_DELETE from header.
INFO  set variable COLOR_PW_OK from header.
INFO  set variable COLOR_PW_ARROW from header.
INFO  set variable COLOR_CASTLE_WHITE from header.
INFO  set variable COLOR_CASTLE_GRAY from header.
INFO  set variable COLOR_CASTLE_DARK_BLUE from header.
INFO  set variable COLOR_CASTLE_YELLOW from header.
INFO  set variable KEY_OPTION from header.
INFO  set variable KEY_SELECT from header.
INFO  set variable KEY_START from header.
INFO  set variable KEY_ESCAPE from header.
INFO  set variable KEY_SPACE from header.
INFO  set variable KEY_LEFT from header.
INFO  set variable KEY_RIGHT from header.
INFO  set variable KEY_P from header.
INFO  set variable SCORE_ENTER_FLOOR from header.
INFO  set variable SCORE_REST_SECONDS from header.
INFO  set variable SCORE_GEMS from header.
INFO  set variable SCORE_STAGE_CLEARED from header.
INFO  set variable COLOR_NIGHT_LETTER_1 from header.
INFO  set variable COLOR_NIGHT_LETTER_2 from header.
INFO  set variable COLOR_NIGHT_LETTER_3 from header.
INFO  set variable PACMAN_CANAL from header.
INFO  set variable GHOST_CANAL from header.
INFO  set variable AUGEN_CANAL from header.
INFO  set variable TIC_TOC_CANAL from header.
INFO  set variable X_POS_HEART from header.
INFO  set variable X_POS_SCORE from header.
INFO  set variable AUDCTL_9BIT_POLY from header.
INFO  set variable AUDCTL_12_1_79M from header.
INFO  set variable AUDCTL_34_1_79M from header.
INFO  set variable AUDCTL_12_16BIT from header.
INFO  set variable AUDCTL_34_16BIT from header.
INFO  set variable AUDCTL_15K from header.
INFO  set variable AUDCTL_64K from header.
INFO  set variable AUDCTL_0 from header.
INFO  Variable usage count:
INFO  show only variables with read usage of at least 9 times.
INFO  show only variables with write usage of at least 4 times.
INFO  Variable: 'GAME_MODE' has 6 writes
INFO  Variable: 'SECONDS' has 12 reads
INFO  Variable: 'LEVEL' has 10 reads
INFO  Peephole Optimizer has 252 optimizations applied.
INFO  Register Optimizer has 20 optimizations applied.
INFO  Long Jump Optimizer has 42 optimizations applied.
INFO  write to /Users/dj/IdeaProjects/tat.night-knight/NIGHT.ASM

atasm -ha -s NIGHT.ASM -gNIGHT.lst -lNIGHT.lab >NIGHT.log
ATasm 1.09 (A mostly Mac65 compatible 6502 cross-assembler)
Pass 1:
In NIGHT.ASM, line 1174--
 Error: Symbol '=1=WEND17' already defined!
make: *** [NIGHT.65o] Error 1

Re: Source von Night Knight

Verfasst: 29.04.2024 10:00
von Dinadan
Ich habe auf Github eine neuere Version von atasm von Peter Hinz gefunden und damit baut Knight Night!
Das atr bootet auch auf meinem Emulator und läuft prima.

Re: Source von Night Knight

Verfasst: 29.04.2024 10:41
von LarsImNetz
Danke für den Hinweis, mach mal bitte ein `git pull`. Ich habe das Makefile entsprechend angepasst und die tests-utils entfernt. Die werden nicht gebraucht.

LG
Lars

Re: Source von Night Knight

Verfasst: 29.04.2024 11:06
von Dinadan
Ja, der ERROR wegen der fehlenden test-utils ist jetzt auch weg :D

Re: Source von Night Knight

Verfasst: 29.04.2024 11:08
von LarsImNetz
Noch ein Punkt: mindestens ATasm 1.23 wird gebraucht.

Re: Source von Night Knight

Verfasst: 29.04.2024 11:46
von Dinadan
1.23 ist die Version von Peter Hinz die ich auf Github gefunden habe: https://github.com/CycoPH/atasm
Das Paket in Homebrew ist leider veraltet.

Re: Source von Night Knight

Verfasst: 29.04.2024 12:03
von LarsImNetz
Homebrew, ist das wirklich auf Github? https://github.com/Homebrew dann könntest Du bestimmt einen Issue schreiben, das die atasm Version veraltet ist. Ich habe keinen Mac, nutze nur Linux und ab und zu noch Windows (10), ab 2025 dann wohl nur noch Linux.

Re: Source von Night Knight

Verfasst: 29.04.2024 12:05
von cas
Die offizielle Version von ATASM ist 1.09

https://atari.miribilist.com/atasm/

Homebrew ist daher nicht veraltet.

Die Version von Peter Hinz ist ein "Fork" von ATASM 1.08

Wahrscheinlich ist es kein "offizieller" Fork.

Es wäre mit Peter Hinz zu klären ob er mit Mark Schmelzenbach die Arbeit an ATASM abgesprochen hat. Wenn nicht, wäre es besser wenn Peter seine Weiterentwicklung umbenennt, denn beide ATASM-Versionen entwicklen sich nun unabhängig und sind nicht mehr kompatibel.

Re: Source von Night Knight

Verfasst: 29.04.2024 12:08
von cas
LarsImNetz hat geschrieben:
29.04.2024 12:03
Homebrew, ist das wirklich auf Github? https://github.com/Homebrew dann könntest Du bestimmt einen Issue schreiben, das die atasm Version veraltet ist. Ich habe keinen Mac, nutze nur Linux und ab und zu noch Windows (10), ab 2025 dann wohl nur noch Linux.
Im Hinblick auf den "xz" Sicherheitsvorfall Anfang April sollten Paketmanager wie Homebrew nicht ohne Rückversicherung des original Autors der Software auf ein neues Repo wechseln. Auch wenn es hier unwahrscheinlich ist, könnte doch das ATASM von Peter Hinz von Autor (Mark Schmelzenbach) unautorisierte Inhalte besitzen.

Re: Source von Night Knight

Verfasst: 29.04.2024 13:01
von Dinadan
"unautorisiert" sicher nicht, Atasm 1.09 ist unter GPL 2 veröffentlicht und die Version von Peter Hinz auch. Trotzdem wäre es natürlich schön die beiden Repos wieder zusammenzuführen, so groß ist die Szene ja nicht.

Re: Source von Night Knight

Verfasst: 02.05.2024 23:57
von skr
Ich habe noch nie etwas in der Form "gepullt" und gebaut. Aber das hat mich gereizt und es funktioniert. War für mich sehr lehrreich. Danke, Lars!

Ich hänge hier mal den Output nach "make start" ran, da sind so einige Warns und auch Fehler, aber dennoch macht er mir ein ATR, das in Atari800MacX und Altirra (mit wine64) auf meine MacBookPro (M1) mit Sonoma 14.4.1 einwandfrei läuft.

Edit: Noch ein Nachtrag zum get-everything-skript.

Ich bin ein wenig über "Please install the atasm" gestolpert, denn da gibt es ja nichts zu installieren. Ich habe atasm 1.23 gebaut, aber dann kam das:

Code: Alles auswählen

./get-everything.sh
Initialise the wnf compiler environment

found xldir in $PATH
found xl-packer in $PATH
found wnfc in $PATH
found atari800 in $PATH
Please install the atasm
Please copy the ATARIXL.ROM firmware to ../fireware directory
found in $PATH the compiler/bin directory!

Problems found: 1

There are more problems, please read above
Er muss natürlich auch in den PATH, da bin ich dann sogar selber drauf gekommen. Wäre gut, wenn da genauso der Hinweis käme, wie bei /compiler/bin:
add the 'compiler/bin' to your PATH env-variable
export PATH=$PATH:$(pwd)/compiler/bin
Und "firmware" ist einmal falsch geschrieben ;)
Please copy the ATARIXL.ROM firmware to ../fireware directory
Wobei das ja deutlich als einfacher Schreibfehler zu erkennen ist. Aber wer weiß, wenn jemand alles wörtlich nimmt, könnte das verwirren.
Compiler Output
Compiler Output
nightknight.png (206.45 KiB) 420 mal betrachtet

Re: Source von Night Knight

Verfasst: 03.05.2024 00:40
von skr
Und um es jetzt ganz einfach zu machen, habe ich das Repository geforked, die Datei geändert und einen Pull request erstellt. Schau mal bitte in Dein GitHub, da hat vor drei Wochen schon jemand auf die fireware hingewiesen. :)

Re: Source von Night Knight

Verfasst: 03.05.2024 07:57
von LarsImNetz
Der Typo ist gefixed.

Re: Source von Night Knight

Verfasst: 03.05.2024 08:12
von cas
Dinadan hat geschrieben:
29.04.2024 13:01
"unautorisiert" sicher nicht, Atasm 1.09 ist unter GPL 2 veröffentlicht und die Version von Peter Hinz auch. Trotzdem wäre es natürlich schön die beiden Repos wieder zusammenzuführen, so groß ist die Szene ja nicht.
Die GPL2 Lizenz bezieht sich auf den Programmcode, nicht den Programm-Namen. Wenn jemand ein Programm nimmt, verändert und veröffentlicht, so sollte er entweder den Namen ändern oder dies mit dem Original-Autor abstimmen.

Wenn der original Autor nicht zugestimmt hat ist es "unautorisiert". Ja, den Code darf man nehmen und ändern, aber dann sollte man auch den Namen ändern (z.B. in ATASM-NG).

Re: Source von Night Knight

Verfasst: 03.05.2024 08:36
von cas
Ich habe Peter Hinze angeschrieben und ihn gebeten, mit Mark mit dem Namen zu sprechen.

Re: Source von Night Knight

Verfasst: 03.05.2024 10:50
von Dinadan
Das scheint irgendwie nicht gut gelaufen zu sein. Das Original bei Sourceforge ist ja auch noch SVN, da kann man nicht so gut zusammenarbeiten. Aber einfach in einem neuen öffentlichen Git-Repo weiterzumachen ist auch nicht cool :roll:

Re: Source von Night Knight

Verfasst: 03.05.2024 12:50
von skr
Mal abgesehen davon ob das nun die feine Art ist, ist es für uns Benutzer sehr verwirrend, wenn es da zwei unterschiedliche Pfade gibt. Wenn man es weiß, muss man immer daran denken abzufragen, welcher atasm nun gemeint ist. Wenn nicht, steht man vielleicht irgendwann vor einem nicht funktionierenden Projekt, nur weil jemand anderes eben die andere Version genommen hat. Ärgerlich.

Ich hoffe, die beiden kommen miteinander ins Gespräch.