Автор Тема: Sega Genesis Intro.  (Прочитано 21890 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Sega Genesis Intro.
« Ответ #30 : 14 Октябрь 2007, 06:13:17 »
Это прозрачность (SHADOW and HIGHLIGHT)

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #31 : 20 Ноябрь 2007, 11:17:00 »
подскажите, как убрать интрошку из переведенного шедевром Shining Force т.к. на эмуле на PSP на нем всё и заканчивается ((

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #32 : 20 Ноябрь 2007, 14:27:20 »
в Shining Force я так понимаю нужно вектора те, что в начале рома на оригинальные заменить, но не уверен, что эта идея Шедевру понравится.

Сделал еще одно интро. С видео и музыкой. Правда, не без багов.
 http://dump.ru/files/n/n5576680/

« Последнее редактирование: 20 Ноябрь 2007, 15:26:52 от evgeny »

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #33 : 20 Ноябрь 2007, 15:28:36 »
evgeny
Ща заценим!!!

PS: эти видел, там моя есть (кусок)
http://emu-russia.km.ru/forum/viewtopic.php?f=13&t=237

Посмотрел, понравилось!!!
Выложи сырцы, please.

Млин, что за ужасный скрип вначале видео.
Заголовок из wav явно не вырезал.
Берешь текстовый редактор и удаляешь первые 52 символа,
сохраняешь, после снова компилишь :)
« Последнее редактирование: 20 Ноябрь 2007, 15:43:46 от Zephyr »

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #34 : 20 Ноябрь 2007, 15:48:34 »
в Shining Force я так понимаю нужно вектора те, что в начале рома на оригинальные заменить, но не уверен, что эта идея Шедевру понравится.
а можно поподробней?
я не для продажи или распространения, а исключительно для личного пользования...

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #35 : 20 Ноябрь 2007, 16:52:41 »
исходники. Коряво написано, предупреждаю сразу.
http://dump.ru/files/n/n867877167/

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #36 : 20 Ноябрь 2007, 19:07:00 »
Спасибо, посмотрим.
Кстати для wav вырезать можно 45 байт.

Добавлено позже:
2lupus
У шедевра свой форум - у них и спроси!

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #37 : 21 Ноябрь 2007, 05:21:01 »
Да нету заголовка, просто я в драйвере z80 изменения от балды сделал, чтобы на размер звука ограничения небыло, вот видимо теперь и читается он с самого начала файла (там где звука еще нет) и до конца. Надо грамотно сделать изменения, а команды z80 для меня пока темный лес.

Кстати, Zephyr, не знаешь ли ты способа сделать DAC стерео? (ну если это вообще возможно)
« Последнее редактирование: 21 Ноябрь 2007, 12:23:13 от evgeny »

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #38 : 21 Ноябрь 2007, 12:41:19 »
Я тоже вчера весь день копался с твоим драйвером, видимо
ошибка в нем - тем более он бинарный уже.
У тебя в цикле много лишнего.
Я немного переделал:
************************************************************

 drawtilesinc 1,0,0,20,15
 pallettes pal,0,0,16
   
 frame=99 
 while 1
 frame++
 if frame=100 then loadtiles 1f,1120,1
 '...
 sleep2 500

'Driver Start -------------------------------------------------------------
 asm

Waitforz80a:
 btst #0,($A11100).l
 bne __WHILE_JUMP_0 ;Wait for z80 to halt
 lea (Z80Driver),a0
 lea ($A00000).l,a1
 move.W #Z80DriverEnd-Z80Driver,d1

LoadZ80Driver:
 move.b (a0)+,(a1)+
 dbf d1,LoadZ80Driver
 move.w #0,($A11100).l ;Start the Z80
 movem.l ($FF0000).l,d0-a6
 lea ($FFFE00).l,a7
 move #$2700,sr
Main:
 move.w #$100,($A11100).l ;Stop the Z80

Waitforz80b:
 move.b #1,($a00039).l
 move.l #SoundEnd-SoundStart,($a00043).l
 move.w #$0,($A11100).l ;Start the Z80

 end asm       
 wend
 
 asm

Z80Init:
Z80InitEnd:
Z80Driver:
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$f3,$ed,$56,$31,$00,$20,$3a,$39,$00,$b7,$ca,$4c,$00,$21,$3a,$00,$81,$40,$00,$01,$06,$00,$ed,$b0,$3e,$00,$32,$39,$00,$3e,$b4,$32,$02,$40,$3e,$c0,$32,$03,$40,$3e,$2b,$32,$00,$40,$3e,$80,$32,$01,$40,$3a,$43,$00,$4f,$3a,$44,$00,$47,$3e,$06,$3d
 dc.b $c2,$81,$00,$21,$00,$60,$3a,$41,$00,$07,$77,$3a,$42,$00,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$3a,$40,$00,$6f,$3a,$41,$00,$f6,$80,$67,$3e,$2a,$32,$00,$40,$7e,$32,$01,$40,$21,$40,$00,$7e,$c6,$01,$77,$23,$7e,$ce,$00,$77,$23,$7e,$ce,$00,$77
 dc.b $3a,$39,$00,$b7,$c2,$4c,$00,$0b,$78,$b1,$c2,$7f,$00,$3a,$45,$00,$b7,$ca,$4c,$00,$3d,$3a,$45,$00,$06,$ff,$0e,$ff,$c3,$7f,$00
Z80DriverEnd:

SoundStart:
 incbin duck.wav
SoundEnd:
 end asm
 
'Driver End -------------------------------------------------------------------
1f: datafile img0001.bin,bin
'...

'Image
pallettedata_rr001:
DATAINT $0000,$0000,$0024,$0646,$0246,$0424,$0242,$024A
DATAINT $0422,$0442,$0000,$0000,$0000,$0000,$0000,$0000
'...

***************************************************************
Слушай, чей это драйвер - дай оригинал, я тож поковыряю.
Как ты изображения подготавливал, использовал TEXImaGenesis 4000 или нет!?
Просто когда я использую TEXImaGenesis 4000 у меня палитры на каждое изображение меняются - хотя сами изображения уже имеют
одинаковые палитры в 16 цветов!?
Просто та прога по своему оптимизирует, видимо попиксельно,
вот и коряво выходит.

Во время работы драйвера, перестают нормально работать функции
bex-а. не работают команды палитры и изображения часто
коряво выходят.

Про стерео незнаю - спроси HardWareMan - он в этом должен шарить.
На звук ограничения у тебя всеже есть:
8000 Hz
8bit
mono.
« Последнее редактирование: 21 Ноябрь 2007, 13:31:56 от Neon »

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #39 : 21 Ноябрь 2007, 12:57:02 »
Я знаю, что много ошибок. Вот оригинальный код драйвера.
Z80Driver:
dc.b $c3,$46,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
dc.b $00,$00,$00,$00,$00,$f3,$ed,$56,$31,$00,$20,$3a,$39,$00,$b7,$ca,$4c,$00,$21,$3a,$00,$11,$40,$00,$01,$06,$00,$ed,$b0,$3e,$00,$32,$39,$00,$3e,$b4,$32,$02,$40,$3e,$c0,$32,$03,$40,$3e,$2b,$32,$00,$40,$3e,$80,$32,$01,$40,$3a,$43,$00,$4f,$3a,$44,$00,$47,$3e,$06,$3d
dc.b $c2,$81,$00,$21,$00,$60,$3a,$41,$00,$07,$77,$3a,$42,$00,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$3a,$40,$00,$6f,$3a,$41,$00,$f6,$80,$67,$3e,$2a,$32,$00,$40,$7e,$32,$01,$40,$21,$40,$00,$7e,$c6,$01,$77,$23,$7e,$ce,$00,$77,$23,$7e,$ce,$00,$77
dc.b $3a,$39,$00,$b7,$c2,$4c,$00,$0b,$78,$b1,$c2,$7f,$00,$3a,$45,$00,$b7,$ca,$4c,$00,$3d,$3a,$45,$00,$06,$ff,$0e,$ff,$c3,$7f,$00

Изображения я через фотошоп подготавливаю. Беру составленную ранее оптимальную палитру и подгоняю под нее изображения. (загружаю палитру)

[Neon] Товаристчи! Пользуйтесь тэгом "code"!
« Последнее редактирование: 21 Ноябрь 2007, 13:33:24 от Neon »

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #40 : 21 Ноябрь 2007, 13:22:44 »
Ясно.
Я драйвер целиком хотел с командами.
Please.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #41 : 21 Ноябрь 2007, 14:04:00 »
Отсюда я брал:

;---------------------------------------
;
; Wav Player v1.0
;
; by drx [www.hacking-cult.org]
;        [www.bluehedgehog.org]
;
; Plays the sound.wav wav sound.
;
;---------------------------------------


Vectors: dc.l $FFFE00, Entrypoint, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l HBlank, Error, VBlank, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
dc.l Error, Error, Error, Error
Header: dc.b 'SEGA MEGA DRIVE ' ; Console name
dc.b '(C) DRX 2004.NOV' ; Copyright/Date
DomesticName: dc.b 'Code template by drx - www.hacking-cult.org     ' ; Domestic Name
dc.b 'Code template by drx - www.hacking-cult.org     ' ; International Name
dc.b 'GM 00000000-00'   ; Version
Checksum: dc.w $1337
; Checksum
dc.b 'J               ' ; I/O Support
RomStartLoc: dc.l 0 ; ROM Start
RomEndLoc: dc.l RomEnd
; ROM End
RamStartLoc: dc.l $FF0000 ; RAM Start
RamEndLoc: dc.l $FFFFFF ; RAM End

dc.b $20,$20,$20,$20 ; 'RA',$F8,$20 if SRAM = on

SramStart: dc.l $20202020 ; $200000 if SRAM = on
SramEnd: dc.l $20202020 ; $20xxxx if SRAM = on

dc.b '                                              ' ; Notes
dc.b '      '
dc.b 'JUE             ' ; Country

;---------------------
; Code start
;---------------------

Entrypoint:

tst.l ($A10008).l ;Test Port A control
bne PortA_Ok

tst.w ($A1000C).l ;Test Port C control

PortA_Ok:
bne SkipSetup

move.b ($A10001).l,d0 ;version
andi.b #$F,d0
beq SkipSecurity ;if the smd/gen model is 1, skip the security
move.l #'SEGA',($A14000).l

SkipSecurity:   

move.w ($C00004).l,d0 ;test if VDP works

moveq #0,d0
movea.l d0,a6
move a6,usp ;set usp to $0

;---------------------
; Setup VDP registers
;---------------------
lea (VDPSetupArray),a0
move.w #(VDPSetupArrayEnd-VDPSetupArray)/2,d1 ;$18 VDP registers

VDPSetupLoop:
move.w (a0)+,($C00004).l
dbf d1,VDPSetupLoop


move.l #$40000080,($C00004).l
move.w #0,($C00000).l ;clean the screen


;---------------------
; Init the Z80
;---------------------

move.w #$100,($A11100).l ;Stop the Z80
move.w #$100,($A11200).l ;Reset the Z80

Waitforz80:
btst #0,($A11100).l
bne Waitforz80 ;Wait for z80 to halt

lea (Z80Init),a0
lea ($A00000).l,a1
move.w #Z80InitEnd-Z80Init,d1

InitZ80:
move.b (a0)+,(a1)+
dbf d1,InitZ80

move.w #0,($A11200).l
move.w #0,($A11100).l ;Start the Z80
move.w #$100,($A11200).l


;---------------------
; Reset the RAM
;---------------------

lea ($FFFF0000).l,a0
move.w #$3fff,d1

ClearRAM:
move.l #0,(a0)+
dbf d1,ClearRAM


;---------------------
; VDP again
;---------------------

move.w #$8174,($C00004).l
move.w #$8F02,($C00004).l


;---------------------
; Clear the CRAM
;---------------------

move.l #$C0000000,($C00004).l ;Set VDP ctrl to CRAM write
move.w #$3f,d1

ClearCRAM:
move.w #0,($C00000).l
dbf d1,ClearCRAM


;---------------------
; Clear the VDP stuff
;---------------------

move.l #$40000010,($C00004).l
move.w #$13,d1

ClearStuff:
move.l #0,($C00000).l
dbf d1,ClearStuff


;---------------------
; Init the PSG
;---------------------

move.b #$9F,($C00011).l
move.b #$BF,($C00011).l
move.b #$DF,($C00011).l
move.b #$FF,($C00011).l


move.w #0,($A11200).l


;---------------------
; Load the z80 driver
;---------------------

move.w #$100,($A11100).l ;Stop the Z80
move.w #$100,($A11200).l ;Reset the Z80

Waitforz80a:
btst #0,($A11100).l
bne Waitforz80a ;Wait for z80 to halt

lea (Z80Driver),a0
lea ($A00000).l,a1
move.W #Z80DriverEnd-Z80Driver,d1

LoadZ80Driver:
move.b (a0)+,(a1)+
dbf d1,LoadZ80Driver

move.w #0,($A11100).l ;Start the Z80

;---------------------
; Clear the registers
; and set the SR
;---------------------

movem.l ($FF0000).l,d0-a6
lea ($FFFE00).l,a7
move #$2700,sr

SkipSetup:


;-----------------------
; Here starts your code
;-----------------------
Main:

;
;ok, so we have to stop the z80 in order to set up the variables
;

move.w #$100,($A11100).l ;Stop the Z80

;
; loops until z80 is halted
;
Waitforz80b:
btst #0,($A11100).l
bne Waitforz80b ;Wait for z80 to halt


;
;in our sound driver, $39 is the on/off variable
;
move.b #1,($a00039).l ;turn the wav playing script on

;
;we have to bitshift the wav address a bit, because Z80 is little endian, compared to 68k (big endian)
;
;data: $12345678
;big endian: $12345678
;little endian: $78563412
;
move.b #((SoundStart&0xFF0000)>>16),($a0003c).l ;addr - $__xxxx
move.b #((SoundStart&0xFF00)>>8),($a0003b).l ;addr - $xx__xx
move.b #(SoundStart&0xFF),($a0003a).l ;addr - $xxxx__

;
; set up the wav length (number of bytes played)
;
move.l #SoundEnd-SoundStart,($a00043).l ;wav length

;
; now we can start te z80 after changing the variables
;
move.w #$0,($A11100).l ;Start the Z80

;
; the infinite loop will occur now, and the z80 will work in the background (z80 and 68k work simultaneously [spelling... :P])
;
dc.w $60fe ;infinite loop (bra $-2)

rts


;---------------------
; Error exceptions
;---------------------

Error:
rte

;---------------------
; Horizontal Blank
;---------------------
HBlank:

rte

;---------------------
; Vertical Blank
;---------------------
VBlank:

rte

;---------------------
; VDP registers array
;---------------------

VDPSetupArray:
dc.w $8004 ;9-bit palette = 1 (otherwise would be 3-bit), HBlank = 0
dc.w $8134 ;Genesis display = 1, DMA = 1, VBlank = 1, display = 0
dc.w $8230 ;Scroll A - $C000
dc.w $8338 ;Window   - $E000
dc.w $8407 ;Scroll B - $E000
dc.w $857c ;Sprites  - $F800
dc.w $8600 ;Unused
dc.w $8700 ;Backdrop color - $00
dc.w $8800 ;Unused
dc.w $8900 ;Unused
dc.w $8A00 ;H Interrupt register
dc.w $8B00 ;Full screen scroll, no external interrupts
dc.w $8C81 ;40 cells display
dc.w $8D3F ;H Scroll - $FC00
dc.w $8E00 ;Unused
dc.w $8F02 ;VDP auto increment
dc.w $9001 ;64 cells scroll
dc.w $9100 ;Window H position
dc.w $9200 ;Window V position
dc.w $93FF ;DMA stuff (off)
dc.w $94FF ;DMA stuff (off)
dc.w $9500 ;DMA stuff (off)
dc.w $9600 ;DMA stuff (off)
dc.w $9780 ;DMA stuff (off)
VDPSetupArrayEnd:


;---------------------
; Z80 init code
;---------------------

Z80Init:
dc.w $af01, $d91f, $1127, $0021, $2600, $f977
dc.w    $edb0, $dde1, $fde1, $ed47, $ed4f, $d1e1                                   
dc.w    $f108, $d9c1, $d1e1, $f1f9, $f3ed, $5636
dc.w $e9e9
Z80InitEnd:

;---------------------
; Music driver (z80)
;---------------------

Z80Driver:
dc.b $c3,$46,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
dc.b $00,$00,$00,$00,$00,$f3,$ed,$56,$31,$00,$20,$3a,$39,$00,$b7,$ca,$4c,$00,$21,$3a,$00,$11,$40,$00,$01,$06,$00,$ed,$b0,$3e,$00,$32,$39,$00,$3e,$b4,$32,$02,$40,$3e,$c0,$32,$03,$40,$3e,$2b,$32,$00,$40,$3e,$80,$32,$01,$40,$3a,$43,$00,$4f,$3a,$44,$00,$47,$3e,$06,$3d
dc.b $c2,$81,$00,$21,$00,$60,$3a,$41,$00,$07,$77,$3a,$42,$00,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$0f,$77,$3a,$40,$00,$6f,$3a,$41,$00,$f6,$80,$67,$3e,$2a,$32,$00,$40,$7e,$32,$01,$40,$21,$40,$00,$7e,$c6,$01,$77,$23,$7e,$ce,$00,$77,$23,$7e,$ce,$00,$77
dc.b $3a,$39,$00,$b7,$c2,$4c,$00,$0b,$78,$b1,$c2,$7f,$00,$3a,$45,$00,$b7,$ca,$4c,$00,$3d,$3a,$45,$00,$06,$ff,$0e,$ff,$c3,$7f,$00
Z80DriverEnd:


SoundStart:
incbin sound.wav
SoundEnd:

RomEnd:

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #42 : 21 Ноябрь 2007, 23:10:18 »
Благодарю!!!

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #43 : 24 Ноябрь 2007, 11:58:05 »
2evgeny
Исправил твой драйвер!!!
Теперь не "хрюкает" вначале, тока заголовок вырезай - 45 байт.
Написал демку!!! Теперь только 8000Hz 8Bit Mono. Ну а что еще нужно для Genesis DAC!?
Кстати, я низнаю как ты отлаживал и исправлял бинарный драйвер,
использовал отладчик или что!? Или так ковырял???
Я посмотрел там где ты внес изменения и по теории вероятности, заменил байты
немного далее, вроде все работает... Способ пальцем в небо короче...
Исправил команды, оставил тока требуемые нам по управлению драйвером.
Вообще неплохо получилось, компактно...

Демо (~450Kb):
http://webfile.ru/1610110
Сырцы (~450Kb):
http://webfile.ru/1610114

PS: 2Neon - спасибо за исправления.



Онлайн HardWareMan

  • Модератор
  • Сообщений: 7438
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #44 : 24 Ноябрь 2007, 20:01:04 »
У Сеги DAC быть стерео не предусмотрен.
Также, не вижу ничего необычного или сверхестественного в этомй "драйвере".
;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA)     |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com>     |
; |     Licensed to: GVU, Gerhard Uphoff, 1 user, adv, 10/2007     |
; +-------------------------------------------------------------------------+
;
; Input MD5   : 7BAE0EF2D8FB15D9CB2668E91A0014A9

; ---------------------------------------------------------------------------
; File Name   : H:\z80driver
; Format      : Binary file
; Base Address: 0000h Range: 0000h - 00E2h Loaded length: 00E2h

; Processor   : z80 []
; Target assembler: Zilog Macro Assembler

; ===========================================================================

; Segment type: Regular
segment RAM
jp loc_46
; ---------------------------------------------------------------------------
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
byte_39: db 0 ; DATA XREF: RAM:loc_4Cr RAM:0060w ...
db 0, 0, 0, 0, 0, 0
byte_40: db 0 ; DATA XREF: RAM:009Fr
byte_41: db 0 ; DATA XREF: RAM:0088r RAM:00A3r
byte_42: db 0 ; DATA XREF: RAM:008Dr
byte_43: db 0 ; DATA XREF: RAM:0077r
byte_44: db 0 ; DATA XREF: RAM:007Br
byte_45: db 0 ; DATA XREF: RAM:00D0r RAM:00D8r
; ---------------------------------------------------------------------------

loc_46:                di                                    ; CODE XREF: RAM:0000j
im 1
ld sp, 2000h

loc_4C:                ld a, (byte_39)         ; CODE XREF: RAM:0050j RAM:00C7j ...
or a
jp z, loc_4C
ld hl, 3Ah ; ':'
ld de, 40h ; '@'
ld bc, 5
ldir
ld a, 0
ld (byte_39), a
ld a, 0B4h ; 'ґ'
ld (4002h), a
ld a, 0C0h ; 'А'
ld (4003h), a
ld a, 2Bh ; '+'
ld (4000h), a
ld a, 80h ; 'Ђ'
ld (4001h), a
ld a, (byte_43)
ld c, a
ld a, (byte_44)
ld b, a

loc_7F:                ld a, 6                    ; CODE XREF: RAM:00CDj RAM:00DFj
loc_81:                dec a                       ; CODE XREF: RAM:0082j
jp nz, loc_81
ld hl, 6000h
ld a, (byte_41)
rlca
ld (hl), a
ld a, (byte_42)
ld (hl), a
rrca
ld (hl), a
rrca
ld (hl), a
rrca
ld (hl), a
rrca
ld (hl), a
rrca
ld (hl), a
rrca
ld (hl), a
rrca
ld (hl), a
ld a, (byte_40)
ld l, a
ld a, (byte_41)
or 80h ; 'Ђ'
ld h, a
ld a, 2Ah ; '*'
ld (4000h), a
ld a, (hl)
ld (4001h), a
ld hl, 40h ; '@'
ld a, (hl)
add a, 1
ld (hl), a
inc hl
ld a, (hl)
adc a, 0
ld (hl), a
inc hl
ld a, (hl)
adc a, 0
ld (hl), a
ld a, (byte_39)
or a
jp nz, loc_4C
dec bc
ld a, b
or c
jp nz, loc_7F
ld a, (byte_45)
or a
jp z, loc_4C
dec a
ld a, (byte_45)
ld b, 0FFh
ld c, 0FFh
jp loc_7F
; ---------------------------------------------------------------------------
Я таким баловался еще 3 года назад:
http://tv-games.narod.ru/hwm.htm
Цитата
А напоследок интересненькое: как это сделали пока не известно, но эта программа, этот РОМ после загрузки начинает проигрывать какую-то японскую мелодию. Всё это напоминает "русский ответ" на Nick o'DIMM'овским мультики Матрица и Ледниковый период, так что в скором будущем, я надеюсь, на Сеге можно будет просматривать небольшие, но озвученные видеоролики и мультфильмы! Для удобства РОМ разбит на 3 части по 900 Кб.
http://tv-games.narod.ru/hard/True_sound_player.part1.rar
http://tv-games.narod.ru/hard/True_sound_player.part2.rar
http://tv-games.narod.ru/hard/True_sound_player.part3.rar

Заметь, звук покачественней звучит, хотя все те же 8кГц и 8 бит. Я сначала сделал сжатие динамического диапазона компрессором, т.к. у 8 бит он уже чем у 16 бит. Длительность - 5:40.
И заметь, мой драйвер при тех же функциях заметно компактнее:
;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA)     |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com>     |
; |     Licensed to: GVU, Gerhard Uphoff, 1 user, adv, 10/2007     |
; +-------------------------------------------------------------------------+
;
; Input MD5   : B3F530BFE8270A4C08A4F4DB8E434D14

; ---------------------------------------------------------------------------
; File Name   : D:\WORK\SEGA\SEGA_MOD\DRIVER.DAT
; Format      : Binary file
; Base Address: 0000h Range: 0000h - 0100h Loaded length: 0100h

; Processor   : z80 []
; Target assembler: Zilog Macro Assembler

; ===========================================================================

; Segment type: Regular
segment RAM
di
ld sp, 1FFFh
ld a, 0B4h ; '┤'
ld (4002h), a
ld a, 0C0h ; '└'
ld (4003h), a
ld a, 2Bh ; '+'
ld (4000h), a
ld a, 80h ; 'А'
ld (4001h), a
ld de, 1

loc_1B:                ld b, 8                     ; CODE XREF: RAM:0046j
ld a, e

loc_1E:                ld (6000h), a            ; CODE XREF: RAM:0023j
rrca
dec b
jp nz, loc_1E
ld a, d
ld (6000h), a
ld hl, 8000h

loc_2D:                ld a, 2Ah ; '*'           ; CODE XREF: RAM:0042j
ld (4000h), a
ld a, (hl)
ld (4001h), a
ld bc, 0Ah

loc_39:                dec bc                       ; CODE XREF: RAM:003Cj
ld a, b
or c
jp nz, loc_39
inc hl
ld a, h
or l
jp nz, loc_2D
inc de
jp loc_1B
« Последнее редактирование: 24 Ноябрь 2007, 21:01:03 от HardWareMan »

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #45 : 25 Ноябрь 2007, 12:49:26 »
2HardWareMan
УГУ, намного компактнее.
ИДА значит, да??? Это отладчик и дизасемблер???
Просто слышал но никогда не пользовался, недорос короче...
И сколько типов процессоров она знает???

У меня попроще отладчик и дизасемблер
AFDPro - 75Кб!!! Писан в 87 году!!! Знает команды до 286 машины!!! Гы...!!!
Ну пока учусь - хватает...

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #46 : 01 Декабрь 2007, 19:04:49 »
Zephyr, не хочешь попытаться звуковой движок Соника на basiegaxorz портировать? Он сейчас компилируется как асм.

http://evgeny1.land.ru/smus.zip

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #47 : 01 Декабрь 2007, 19:45:49 »
evgeny, ты гений! Засунуть мультик в сегу - это что то!

Онлайн HardWareMan

  • Модератор
  • Сообщений: 7438
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #48 : 03 Декабрь 2007, 18:01:13 »

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #49 : 04 Декабрь 2007, 07:19:33 »
Супер!
Я так понимаю ты вытащил движок GEMS.
Интересно совпадет ли формат с другими играми имеющий этот движок? Например, Earthworm Jim, Vectorman,WWF Wrestlemania Arcade,Cool Spot,Aladdin...

Онлайн HardWareMan

  • Модератор
  • Сообщений: 7438
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #50 : 04 Декабрь 2007, 07:58:28 »
Супер!
Я так понимаю ты вытащил движок GEMS.
Интересно совпадет ли формат с другими играми имеющий этот движок? Например, Earthworm Jim, Vectorman,WWF Wrestlemania Arcade,Cool Spot,Aladdin...
А че его вытаскивать? Найти место загрузки и выдрать - это самое простое. Надо - берите. Сложнее его ресурсы выдрать. Но тут есть один секрет, который я не расскажу.
Говорю вам, это сложный самомодифицирующийся код. Я нашел 4 места, где он меняет себе команды и операнды в командах. А сколько их там еще - неизвестно. Разберетесь с управлением - будет здорово.
« Последнее редактирование: 04 Декабрь 2007, 08:04:52 от HardWareMan »

org

  • Гость
Re: Sega Genesis Intro.
« Ответ #51 : 04 Декабрь 2007, 12:49:31 »
Исходный код GEMS: http://www.hidden-palace.org/?releases/44

Онлайн HardWareMan

  • Модератор
  • Сообщений: 7438
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #52 : 04 Декабрь 2007, 16:04:58 »
*
* stdsetup - setup these regs:
*  d1 - the old value of wptr
*  a0 - Z80RAM+$36(wptr)
*  a1 - Z80RAM+$1A40(fifo)
* also save the sr, turns off ints, and holds the z80
*
stdsetup
move.l (sp)+,a0 ; get the return addr
link a6,#0 ; set up the link
movem.l d1/a1,-(sp) ; save some regs
move.w sr,-(SP)

move.l a0,-(sp) ; push the return addr

lea Z80RAM+$36,a0 ; a0 points to wptr
lea Z80RAM+$1A40,a1 ; a1 points to fifo

or.w #$0700,sr ; disable ints

move.w #$100,BUSREQ ; Z80 bus request on
sslp btst.b #0,BUSREQ ; spin on bus grant
bne.s sslp

move.b (a0),d1 ; d1 is write index into fifo
ext.w d1 ; extend to 16 bits

rts
Ооо..... Вон оно как... Знакомые структуры! ;)
Блин, а я то думал, что за тупой метод работы с драйвером... Про пакетность и все такое я понял, но блин вон откуда ноги растут. Чтож, теперь, я думаю, на этом движке мона много нарипать мелодий и объеденить в РОМ. в 4 мега войдет куча игр...
PS От себя добавлю - из всех мною видимых драйверов это САМЫЙ продвинутый и комплексный. Так что его и тока его юзать. Правда, как альтернатива - двигун Shiru тоже ничего, но он SFXы не держит вроде.
« Последнее редактирование: 04 Декабрь 2007, 16:10:13 от HardWareMan »

Оффлайн sergi

  • Пользователь
  • Сообщений: 1650
    • ВКонтакте
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #53 : 04 Декабрь 2007, 17:03:47 »
Раз такие все продвинутые быть может кто выдаст информацию общего плана:
1. Какие вообще движки используются в играх
2. Какие компании какие движки юзали
3. Какие движки нужно использовать для своих игр
4. Чем разные движки отличаются друг от друга
5. Какие движки использовались в хитовых играх
 :?

org

  • Гость
Re: Sega Genesis Intro.
« Ответ #54 : 04 Декабрь 2007, 17:11:19 »
Эту и предыдущую ссылку не так давно давал Санчез: http://gdri.smspower.org/wiki/index.php/Mega_Drive/Genesis_Sound_Engine_List

Оффлайн sergi

  • Пользователь
  • Сообщений: 1650
    • ВКонтакте
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #55 : 04 Декабрь 2007, 17:18:52 »
Ок - качнул - спасибо

Вижу что GEMS во многих хароших играх использовался

Ну теперь бы конвертер сделать под каждый движок - даешь wav а на выходе ром на движке
Запускаешь и играешь :cool:

Онлайн HardWareMan

  • Модератор
  • Сообщений: 7438
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #56 : 04 Декабрь 2007, 17:36:54 »
Ну теперь бы конвертер сделать под каждый движок - даешь wav а на выходе ром на движке
Запускаешь и играешь :cool:
WAV не сделаешь. А вот MOD/MIDI реально.

Оффлайн sergi

  • Пользователь
  • Сообщений: 1650
    • ВКонтакте
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #57 : 04 Декабрь 2007, 17:40:33 »
Ну на безрыбье и рак щука

Хотя интересно - у сеги же синтезатор - т.е. любой звук может сделать? - wav - особенно человеческую речь жмут же както? - в MK3 тоже GEMS использовали :?

Онлайн HardWareMan

  • Модератор
  • Сообщений: 7438
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #58 : 04 Декабрь 2007, 17:55:32 »
Ну на безрыбье и рак щука
Хотя интересно - у сеги же синтезатор - т.е. любой звук может сделать? - wav - особенно человеческую речь жмут же както? - в MK3 тоже GEMS использовали :?
Это всего ОДИН канал. Что ты еще хочешь? FM у Сеги и баста.

Оффлайн sergi

  • Пользователь
  • Сообщений: 1650
    • ВКонтакте
    • Просмотр профиля
Re: Sega Genesis Intro.
« Ответ #59 : 04 Декабрь 2007, 18:00:37 »
Ну главное чтобы короче была прога которая конвертит wav в сеговский ром - это круто

На Денди я уже говорил что сделали заставочную песню черепашек и ужали в 1 метр под MMC5 маппер

Кстати есть ли привязка движка музыки к движку самой игры - ну наверно графики - там же тоже свои методы сжатия информации и размещения ресурсов?
Тоже хотелось бы иметь хоть какую инфу
Особенно игра DUNE интересует - вроде тоже звук GEMS
« Последнее редактирование: 05 Декабрь 2007, 00:32:09 от sergi »