Compartilhe
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1948
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Como utilizar o ADMA?

em Seg 17 Fev 2014, 00:37
Como se utiliza o ADMA (Advanced Direct Memory Acess) ? Nunca vi algum SCRIPT utilizando isso.


Última edição por Kevin Prestes em Seg 17 Fev 2014, 00:59, editado 1 vez(es)
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 00:44
pq não precisa e alem de ser mais complicado e mais limitado em relação ao read_memory/write_memory

______________________________
"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1948
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 00:47
Mas, mesmo assim queria saber usar. Poderia me explicar?
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário
  • Reputação da mensagem: 100% (2 votos)

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 01:11
é uma tecnica bastante inteligente e esta de parabéns o rapaz que a inventou. Foi usado pra conseguir reproduzir a CLEO 1 e CLEO 2 :)

O inicio do main.scm é cheio de zeros, esses zeros são espaços reservados para variaveis globais.
O jogo lé o main.scm inteiro para a memoria e quando é necessario ler ou escrever uma global ele so faz ir no inicio desse espaço e escrever/ler.
Então quanto você acessa a variavel $0 você esta acessando o offset 0 do main.scm, quando você acessa a variavel $1 o offset 4, a variavel $2 o offset 8, etc, levando em consideração que cada global toma 4 bytes.

Bem, como você sabe é possivel utilizar arrays para acessar sequencialmente as variaveis, por exemplo $0[0] acessaria o offset 0 e $0[2] o offset 8.
Agora vamos internamente.... Lembra que disse que o main é lido pra memoria e dai ocorre as operações na memoria? Então, ele é lido para 0xA49960.
Portando quando você acessa o offset 8 do main.scm você ta acessando 0xA49960 + 8 = 0xA49968

Ja entendeu a brincadeira? Com isso é possivel basicamente acessar toda a memoria do jogo partido do 0xA49960 como principio!
Se quiser acessar antes do 0xA49960 usa offsets negativos e se quiser acessar depois de 0xA49960 offsets positivos.

$0[-1] vai acessar 0xA49960 - 4 = 0xA4995C e assim a vida acontece.

Pra aplicar isso no Sanny Builder você tem que usar & em vez de $, pois o Sanny não aceita que você utilize as primeiras 2 globais ja que tem um jump nelas...  & acessa os offsets diretos, ou seja &4 é a $1 e &0 a $0.
Tambem vai precisar usar uma variavel no lugar do numero do indice.

Então por exemplo
Código:
0@ = -1
&0(0@, 1i) = 2012
Você vai estar escreve 4 bytes, 2012, em 0xA4995C

______________________________
"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 01:22
legal isso↑
inutil mas eh legal pakas

e dah pra usar hexadecimal sem problemas? (se nao me engano sim pq o sanny compila o hexadecimal pra decimal neh, nem lembro)
Código:
0@ = -0x4DAC
&0(0@, 1i) = 1.0
ps: o limite eh pq soh escreve 4 bytes sempre neh?

______________________________

avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1948
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 01:46
Compila pra Decimal sim Junior. Mistura isso com Array confunde maisto ainda. Mas é legal.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 01:50
ps: o limite eh pq soh escreve 4 bytes sempre neh?
sim

______________________________
"Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18912
Reputação : 346
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 12:24
@Junior_Djjr escreveu:legal isso↑
inutil mas eh legal pakas

Era muito útil quando não se tinham read_memory/write_memory

@Kevin Prestes escreveu:Compila pra Decimal sim Junior. Mistura isso com Array confunde maisto ainda. Mas é legal.

Hexadecimal, decimal, octal, etc. é apenas uma forma pra humanos ler, tudo vira binário

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 13:25
@Fabio escreveu:Hexadecimal, decimal, octal, etc. é apenas uma forma pra humanos ler, tudo vira binário
sim, lembro q eu tinha lido isso, mas como nao me foco tanto em programação começou a bater essa duvida :hm:

______________________________

avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1948
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Como utilizar o ADMA?

em Seg 17 Fev 2014, 20:24
Já aprendi OK, podem Closar se quiserem.
Conteúdo patrocinado

Re: Como utilizar o ADMA?

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum