1
Эмуляторы аркадных автоматов / Эмулятор аркадных автоматов М.А.M.E
« : Вчера в 08:10:03 »
В игровых автоматах AUSCOM System 1 прорезался первый звук.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
Чел (наш) тут в дискорд SGDK залетел и такой приблудой поделился под Sega Genesis - статический рекомпилятор на основе эмулятора SegaCxx. Позволяет получить из бинарника не asm, а с++ код, который после можно собрать под нужную платформу (звуковое и графическое API тоже подменяется на кроссплатформенные). На хабре вот тоже заметка про него https://habr.com/ru/articles/1029360/.
https://github.com/testdriveupgrade/MegaDriveRecomp

mame ls5amvp3 -pci:07.0:aux_con hle_ps2_mouse -pci:1 virgedx -isa1 sb16_lle -hard MyXP.chd000106: 46FC 2700 move #$2700, SR
00010A: 4FF9 0008 4000 lea $84000.l, A7
000110: 41F9 0008 0000 lea $80000.l, A0
000116: 303C 0FFF move.w #$fff, D0
00011A: 20FC 0000 0000 move.l #$0, (A0)+
000120: 51C8 FFF8 dbra D0, $11a
000124: 41F9 0003 F800 lea $3f800.l, A0
00012A: 43F9 0008 0000 lea $80000.l, A1
000130: 3E3C 01FF move.w #$1ff, D7
000134: 22D8 move.l (A0)+, (A1)+
000136: 51CF FFFC dbra D7, $134
00013A: 4EB9 0001 489A jsr $1489a.l
000140: 60FE bra $140
<...>
01489A: 303C 48E7 movem.l D2-D3/A2-A5, -(A7)
01489E: 207C 0000 B97C move.l #$b97c, A0
0148A4: 2408 move.l A0, D2
0148A6: 263C 0008 24EC move.l #$824ec, D3
0148AC: 4EB9 0000 B1C2 jsr $b1c2.l
0148B2: 4241 clr.w D1
0148B4: 207C 0008 24C6 movea.l #$824c6, A0
0148BA: 227C 0000 062A movea.l #$62a, A1
0148C0: 247C 0008 24B2 movea.l #$824b2, A2
0148C6: 267C 0000 063E movea.l #$63e, A3
0148CC: 287C 0008 24DA movea.l #$824da, A4
0148D2: 203C 0000 0652 move.l #$652, D0
0148D8: 20D9 move.l (A1)+, (A0)+
0148DA: 24DB move.l (A3)+, (A2)+
0148DC: 2A40 movea.l D0, A5
0148DE: 38D5 move.w (A5), (A4)+
0148E0: 5241 addq.w #1, D1
0148E2: 5480 addq.l #2, D0
0148E4: 0C41 0005 cmpi.w #$5, D1
0148E8: 65EE bcs $148d8
0148EA: 4EB9 0000 BA14 jsr $ba14.l
0148F0: 4240 clr.w D0
0148F2: 33C0 0008 24EA move.w D0, $824ea.l
0148F8: 33C0 0008 2498 move.w D0, $82498.l
0148FE: 33C0 0008 24F6 move.w D0, $824f6.l
014904: 4EB9 0000 DFD8 jsr $dfd8.l
01490A: 2443 movea.l D3, A2
01490C: 082A 0007 0001 btst #$7, ($1,A2)
014912: 6706 beq $1491a
014914: 4878 0003 pea $3.w
014918: 6022 bra $1493c
01491A: 2043 movea.l D3, A0
01491C: 0828 0004 0001 btst #$4, ($1,A0)
014922: 6706 beq $1492a
014924: 4878 0004 pea $4.w
014928: 6012 bra $1493c
01492A: 2043 movea.l D3, A0
01492C: 0828 0005 0001 btst #$5, ($1,A0)
014932: 6706 beq $1493a
014934: 4878 0005 pea $5.w
014938: 6002 bra $1493c
01493A: 42A7 clr.l -(A7)
01493C: 4EB9 0000 B97C jsr $b97c.l
014942: 588F addq.l #4, A7
014944: 4EB9 0000 0174 jsr $174.l
01494A: 60FE bra $1494a000142: 48E7 FFFE movem.l D0-D7/A0-A6, -(A7)
000146: 3039 0008 1E96 move.w $81e96.l, D0
00014C: 0C40 0000 cmpi.w #$0, D0
000150: 6700 0010 beq $162
000154: 4EB8 0180 jsr $180.w
000158: 4E71 nop
00015A: 33FC 0000 0008 1E96 move.w #$0, $81e96.l
000162: 4EB8 01C2 jsr $1c2.w
000166: 4E71 nop
000168: 4EB9 0001 4EB6 jsr $14eb6.l
00016E: 4CDF 7FFF movem.l (A7)+, D0-D7/A0-A6
000172: 4E73 rte ;movem.l D2-D3/A2-A5, -(A7)
;move.l #LocalModeSelect, D2
jsr cls_local
moveq #4, D1
movea.l #TemporaryLocalPlayerNames, A0
movea.l #LocalPlayerNames, A1
movea.l #TemporaryLocalHiScore, A2
movea.l #LocalHiScore, A3
movea.l #TemporaryLocalAvatars, A4
movea.l #LocalAvatars, A5
LocalHiScoreInit:
move.l (A1)+, (A0)+
move.l (A3)+, (A2)+
move.w (A5)+, (A4)+
dbra D1, LocalHiScoreInit
;jsr LocalSoundInit
clr.w $824ea.l
clr.w $82498.l
clr.w $824f6.l
clr.l -(A7)
jsr LocalModeSelect
addq.l #4, A7
VBlankReturnCheck:
cmp BIOS_FRAME_COUNTER, LocalFrameCounter
beq VBlankReturnCheck
movem.l D0-D7/A0-A6, -(A7)
move.w LocalPalChange, D0
cmpi.w #0, D0
beq LocalNewFrame
jsr LocalLoadPal
move.w #0, LocalPalChange
LocalNewFrame:
jsr LocalPlaySound
jsr BonusGameLoop
movem.l (A7)+, D0-D7/A0-A6
bra VBlankReturnCheckно, некоторые изменения действительно ожидаются, вернее они уже есть в репозитории - переход на стандарт С++20.
в связи с чем идут лесом компиляторы без его поддержки, то есть GCC ниже 11й версии (видимо кто-то на банистере на это жаловался) а значит и все более старые дистрибутивы линуха их использующие. виндовые минимальные требования также планируется повысить, хз до каких, по идее до win10.
Томахомэ, анонсирован когда? 1го апреля? вы там хоть по праздникам голову включайте что-ли
Когда еще Мистер не был столь популярен, плату DE10 nano у Terasic можно было урвать за 100$, так что выводы сколько стоит можете сделать сами. Скорее всего себестоимость гораздо ниже даже этой цены, ибо в убыток себе никто продавать не будет. И таки да, самый дорогой чип на этой плате это 5cseba6u23i7 SOC Cyclone V. Кстати на EBAY самый дешевый 5cseba6u23i7 стоит 18.48$
Как по мне, цена мистера очень сильно раздута в последнее время.
Ты не пользуешся нейросетями? Они бы смогли хорошо ответить. Очень хорошый и доступный в РФ - Deepseek (не забудь там оставить нажатой кнопку Search). Также Гугл теперь встроил свой в поиск Режим ИИ.
По простому говоря, в современных системах нет прерываний и програмист сам решает когда обновлять всё. Например, измеряет прошедшее время, и если оно более 16 милисекунд, то запускает новый цыкл опроса, обновления.
https://chat.deepseek.com/share/fs2wxxqv9xhn33f1mg
хорошо, что я ничего не понял... а то бы как понял!
VBlank:
0017F4: 48E7 FFFE movem.l D0-D7/A0-A6, -(A7)
0017F8: 007C 0700 ori #$700, SR
0017FC: 2A7C 00C0 0004 movea.l #$c00004, A5
001802: 2C7C 00C0 0000 movea.l #$c00000, A6
001808: 4A38 E2B2 tst.b $e2b2.w
00180C: 6704 beq $1812
00180E: 4EBA F01E jsr ($82e,PC)
001812: 2038 E002 move.l $e002.w, D0
001816: 6704 beq $181c
001818: 2040 movea.l D0, A0
00181A: 4E90 jsr (A0)
00181C: 5278 E006 addq.w #1, $e006.w
001820: 52B8 E01A addq.l #1, $e01a.w
001824: 4A38 E426 tst.b $e426.w
001828: 6704 beq $182e
00182A: 5338 E426 subq.b #1, $e426.w
00182E: 45F8 F800 lea $f800.w, A2
001832: 141A move.b (A2)+, D2
001834: 6F20 ble $1856
001836: 0242 0003 andi.w #$3, D2
00183A: 7600 moveq #$0, D3
00183C: 161A move.b (A2)+, D3
00183E: 0C43 0014 cmpi.w #$14, D3
001842: 6D0E blt $1852
001844: 0C43 003C cmpi.w #$3c, D3
001848: 6E08 bgt $1852
00184A: 2F03 move.l D3, -(A7)
00184C: 4EB8 1664 jsr $1664.w
001850: 588F addq.l #4, A7
001852: 5302 subq.b #1, D2
001854: 6EE6 bgt $183c
001856: 42B8 F800 clr.l $f800.w
00185A: 4CDF 7FFF movem.l (A7)+, D0-D7/A0-A6
00185E: 4E73 rteЕсли вознамерился портировать Dune или какой-то из её хаков на другую платформу с одной стороны, не "на глазок", а через переписку дизассемблята под нужную архитектуру, а с другой, не как самостоятельную игру, а как высокоинтегративный SDK-, движко-, и, может быть, даже языконезависимый модуль (несущий на себе функцию, например, какой-то бонусной активности внутри другой игры), то как бы перевалить отрисовку экрана и всякий такой код, который надо выполнять каждый кадр, с обработчика прерываний (пусть модуль полагается на таковой у материнской игры) на сердцевину модуля?
1 ядро будет работать, остальные курить...
под одно ядро...
а в комментариях там дан ответ в чем вероятная причина.
With the cycle-granular Z80 and new memory system features, it might be time to revisit this stuff., что ли?
какого бага? внизу я вижу коментарии Vas-а типа что тот кто создал issue просто голову морочит