Brazilian Modding Studio
Olá, seja bem vindo à Comunidade BMS!

Para se registrar no fórum, siga os passos:

1 - Clique em "Registrar-se" aqui em baixo;
2 - Aceite os termos de serviço;
3 - Escolha um nome de usuário e senha;
4 - Realize o login no fórum clicando em "Conectar-se".

Compartilhe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1954
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário
em Seg Fev 17, 2014 12:37 am
Como se utiliza o ADMA (Advanced Direct Memory Acess) ? Nunca vi algum SCRIPT utilizando isso.


Última edição por Kevin Prestes em Seg Fev 17, 2014 12:59 am, editado 1 vez(es)
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7858
Reputação : 349
Desde : 03/05/2012
Ver perfil do usuário
em Seg Fev 17, 2014 12:44 am
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 - Avançado
Scripter CLEO - Avançado
Mensagens : 1954
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário
em Seg Fev 17, 2014 12:47 am
Mas, mesmo assim queria saber usar. Poderia me explicar?
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7858
Reputação : 349
Desde : 03/05/2012
Ver perfil do usuário
  • Reputação da mensagem: 100% (2 votos)
em Seg Fev 17, 2014 1:11 am
é 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 : Censurando since 2011
Mensagens : 22942
Reputação : 727
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Seg Fev 17, 2014 1:22 am
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?

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1954
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário
em Seg Fev 17, 2014 1:46 am
Compila pra Decimal sim Junior. Mistura isso com Array confunde maisto ainda. Mas é legal.
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7858
Reputação : 349
Desde : 03/05/2012
Ver perfil do usuário
em Seg Fev 17, 2014 1:50 am
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 : 19257
Reputação : 384
Desde : 04/05/2012
Idade : 21
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com
em Seg Fev 17, 2014 12:24 pm
@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 : Censurando since 2011
Mensagens : 22942
Reputação : 727
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
em Seg Fev 17, 2014 1:25 pm
@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:

______________________________
BMS agora em nova plataforma:
Forum.MixMods.com.br
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1954
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário
em Seg Fev 17, 2014 8:24 pm
Já aprendi OK, podem Closar se quiserem.
Conteúdo patrocinado
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum