существует ли шанс что эмуль соберут по windows/arm? unreal работает более менее нормально при эмуляции а zxmak2 крашится…
Вид для печати
существует ли шанс что эмуль соберут по windows/arm? unreal работает более менее нормально при эмуляции а zxmak2 крашится…
ZXMAK, спасибо Вам, видимо все таки владете телепатией, сегодня внезапно заработало само все, скорее всего дело в апдейтах винды, работает довольно клево на Win11Arm@VMWare Fusion@Apple M3
а где ссылки на сам актуальный эмулятор? а то тему читаю, все время чтото поправляют и добавляют, а на гитхабе дохлая мышь от 2018 года только висит.
нужно синхронизировать код с репозиторием, когда я начинал исправлять код, у меня не был настроен git. Сейчас там нужно потратить время, чтобы все корректно синхронизировать, т.к. изменения включают исправления в регистре имени файлов (важно для линукса), я также делал OpenGL бакенд но работа приостановилась в состоянии - прототип на Linux отлично работает, не хуже чем бакенд DirectX в Windows, но в Windows у меня сейчас нет возможностей проверить, а по некоторым отзывам на Windows с новым OpenGL бакендом есть проблемы с пропуском кадров при отображении, непонятно с чем связанные - это не нагрузка на процессор, скорости хватает, все кадры отправляются на дисплей, но система почему-то пропускает некоторые кадры даже на простом приложении с переключением цвета заливки экрана на каждом кадре, возможно проблема с конкретным драйвером nVidia.
Готов с этим помочь, если выложишь просто снапшот текущей директории. Замежу и пулл-реквест пришлю. Больно смотреть, как эмулятор превращается в распространяющийся бинарями closed source.
- - - Добавлено - - -
Вот, кстати, может будет интересно. Недавно озаботился причесыванием своей архивной копии репозитория.
Там у меня не как у тебя, где первый коммит - это переезд на гитхаб, а хранится вся история со времен codeplex. Я перетащил все более свежие коммиты из основного репо и настроил автосборку на серверах гитхаба при пуше.
Еще переписал всю историю, распаковав ROMS.PAK. Теперь всё лежит отдельными ромами (так намного удобней отслеживать историю изменений в логе), а в архив собирается уже при окончательной релизной сборке автоматом.
https://github.com/atsidaev/ZXMAK2-archive
да, с ромами я тоже сделал отдельную папку с ромами и скриптом для сборки, правда скрипт bash, для линукс. Можно и для Windows батник добавить, но может есть лучше варианты?
Я там также убрал ildasm/ilasm из проектного файла, т.к. оно сильно тормозило сборку и слишком сложно было править большой IL файл и были проблемы с компиляцией на линукс, теперь код генерится с помощью Mono.Cecil, и достаточно просто добавить прототип функции в C# и он автоматически при сборке имплементируется. Это используется для реализации OpenGL, где для вызова функции теперь достаточно толко объявить прототип функции и переменную с указателем с таким-же именем и они автоматически имплементятся и инициализируются при компиляции - можно сразу вызывать и проверять указатель - найдена ли функция. Переписывание кода с си заключается по сути в добавлении прототипов функций в класс gl и замене glClear на gl.Clear, или GL_VERSION на GL.VERSION.
Вот пример OpenGL кода:
А как ты перетащил историю с codeplex?Код:static void onResize(Vector2i wndSize) {
gl.Viewport(0, 0, wndSize.X, wndSize.Y);
gl.MatrixMode(GL.PROJECTION);
gl.LoadIdentity();
gl.Ortho(0.0, 1.0, 1.0, 0.0, 1, 0);
gl.MatrixMode(GL.MODELVIEW);
}
static void onRender(Context ctx, Vector2i size) {
gl.MatrixMode(GL.MODELVIEW);
gl.PushMatrix();
gl.Clear(GL.COLOR_BUFFER_BIT | GL.DEPTH_BUFFER_BIT);
gl.Enable(GL.TEXTURE_2D);
gl.LoadIdentity();
if (_program.IsLinked) {
gl.UseProgram(_program.Id);
if (_rubyInputSizeId != -1)
gl.Uniform2f(_rubyInputSizeId, 320f, 256f);
if (_rubyOutputSizeId != -1)
gl.Uniform2f(_rubyOutputSizeId, (float)size.X, (float)size.Y);
if (_rubyTextureSizeId != -1)
gl.Uniform2f(_rubyTextureSizeId, 320f, 256f);
}
curtxid = texids[curtex];
gl.BindTexture(GL.TEXTURE_2D, curtxid);
gl.Begin(GL.TRIANGLE_STRIP);
gl.TexCoord2f(1.0f, 0.0f); gl.Vertex2f(1.0f, 0.0f); // RT
gl.TexCoord2f(0.0f, 0.0f); gl.Vertex2f(0.0f, 0.0f); // LT
gl.TexCoord2f(1.0f, 1.0f); gl.Vertex2f(1.0f, 1.0f); // RB
gl.TexCoord2f(0.0f, 1.0f); gl.Vertex2f(0.0f, 1.0f); // LB
gl.End();
if (_program.IsLinked) {
gl.UseProgram(0);
}
gl.Disable(GL.TEXTURE_2D);
gl.MatrixMode(GL.MODELVIEW);
gl.PopMatrix();
gl.Flush();
//gl.Finish();
ctx.SwapBuffers();
}
Я уже не помню, что там не кодеплексе было, svn вроде? Экспортировал весь репо в несколько сотен патчей, а потом на их основе гит-репо конструировал.
А зачем? Для разработки достаточно того, что папка ROMS копируется в папку с экзешником (я добавил в csproj таргет для этого). У тебя же там так и сделано, что в ROMS.PAK мы лезем только если файл не найден в файловой системе. Поэтому скопировать всю папку достаточно. А релизные версии пусть сам гитхаб собирает, раз он предоставляет теперь такие возможности. Вот такой у меня там скрипт - https://github.com/atsidaev/ZXMAK2-a...lows/build.ymlЦитата:
да, с ромами я тоже сделал отдельную папку с ромами и скриптом для сборки, правда скрипт bash, для линукс. Можно и для Windows батник добавить
Я там еще начал делать чтобы артефакты сборки куда-нибудь выкладывались, но не допилил еще. Можно сделать даже так, что новые версии будут прямо в Releases выкладываться.