Tales of Popolon (new MSXDev'17 entry)

Página 13/20
6 | 7 | 8 | 9 | 10 | 11 | 12 | | 14 | 15 | 16 | 17 | 18

Por NYYRIKKI

Enlighted (5918)

Imagen del NYYRIKKI

25-04-2017, 11:58

santiontanon wrote:

So, even if I am hijacking my own thread, after reading the description of your tool here ( https://www.msx.org/downloads/utilities/rom/nyyrikkis-msx-ro... ) I was wondering how does it work, is it using some sort of pattern matching to identify sequences of bytes that could be Z80 assembler code?

No, there is currently no pattern matching at all... It is more like emulating my own thoughts about Z80 code... I give an example. If the code ie. looks like this:

	LD BC,#387
	LD DE,#4421
	LD B,A

The AI thinks that "hmm... this looks suspicious... The B-register is loaded even though it already had an unused value" By it self this is not a strong statement against the code validity, but the AI uses fuzzy logic and evaluates the "big picture", so once it has pile of similar thoughts it combines them to form a complete opinion.

Por santiontanon

Paragon (1636)

Imagen del santiontanon

25-04-2017, 15:22

Hmm, I think I understand. So, in this case, it'd detect evidence that that sequence of bytes might not represent code. If you ever write a document/blog/wiki about how it works, make sure to point us to it, since I'd be curious to read it Smile I can understand that in this example above you could detect something "fishy" is going on since registers are assigned and not used, but being able to detect what is code and not in general seems to be a very hard problem, so great job!!!

Por NYYRIKKI

Enlighted (5918)

Imagen del NYYRIKKI

25-04-2017, 19:17

santiontanon wrote:

Hmm, I think I understand. So, in this case, it'd detect evidence that that sequence of bytes might not represent code. If you ever write a document/blog/wiki about how it works, make sure to point us to it, since I'd be curious to read it Smile I can understand that in this example above you could detect something "fishy" is going on since registers are assigned and not used, but being able to detect what is code and not in general seems to be a very hard problem, so great job!!!

Yes, as in random data most of it will end up looking like different load-commands from Z80 point of view, I've put quite a much effort in to tracking what registers each command use as input and to what registers the result will affect. I also look ie calls and jumps... If the call is made to well known BIOS entry, then that is likely event... If it is made to address that it should definitely not call, then this is unlikely event... If it calls a subroutine and previous command looking from the subroutine start address is ret or a jump-command then it probably called start of a routine etc... Similar checks are also made for memory read/write... The routine does not know that the answer to life, the universe and everything is 42, but it simply combines all of these minor hints to get an idea what it might be, so this is just traditional example of expert systems type of AI. The "self aware" part simply comes from the fact that the very first code that I gave it to test was it's own binary and it succeeded well in my tests. Smile

I don't think that I ever write a wiki about the functionality, but if you want to take a look, I can send the source for you to check out. I don't want to put it publicly online as using it always requires some customization to make it run fine on the underlying environment and I like to be involved in that process and make sure the implementer understands this. Anyway I'm willing to give my helping hand to anyone who needs such a routine. ie. just few weeks ago it found a new home inside Loathrax's SofaRun.

Por Manuel

Ascended (18777)

Imagen del Manuel

25-04-2017, 21:35

So it's like a voting-based system? A piece of memory gets several votes on 'ML' or 'non-ML' bin and at the end, the bin which gets the most votes wins?

Por santiontanon

Paragon (1636)

Imagen del santiontanon

26-04-2017, 04:29

hehehe Smile

I just took a look at the code you sent me, and I'm actually impressed you coded this in assembler! from your description, I was imagining something in a high-level language like C or something. But you managed to fit this into a small assembler program!! Also, I remember a few months ago nikodr started a thread asking about disassembled MSX games ( https://www.msx.org/forum/development/msx-development/msx-ga... ), and I think this AI code could be a very good starting point, by separating code from data on original MSX games as a starting point for disassembling them! It'd be really cool to see if someone discovers any hidden and still to be discovered easter egg in the source code of some Konami game :)

Por NYYRIKKI

Enlighted (5918)

Imagen del NYYRIKKI

26-04-2017, 09:43

Manuel wrote:

So it's like a voting-based system? A piece of memory gets several votes on 'ML' or 'non-ML' bin and at the end, the bin which gets the most votes wins?

Yes, exactly.

santiontanon wrote:

hehehe Smile

I just took a look at the code you sent me, and I'm actually impressed you coded this in assembler! from your description, I was imagining something in a high-level language like C or something. But you managed to fit this into a small assembler program!!

Well, we are talking about ML here, so I think assembler was quite a natural choice. Smile

santiontanon wrote:

Also, I remember a few months ago nikodr started a thread asking about disassembled MSX games ( https://www.msx.org/forum/development/msx-development/msx-ga... ), and I think this AI code could be a very good starting point, by separating code from data on original MSX games as a starting point for disassembling them!

Well, actually I've been thinking about this my self as well... My idea was that my code could use the existing tables to go recursively trough the code in a ROM, draw a map of it to VRAM and then fill in the blanks with AI. In the end it could generate input file for Z80DIS and let it do the rest... How ever this is just an idea, I've not tried anything like that.

Por santiontanon

Paragon (1636)

Imagen del santiontanon

25-06-2017, 03:47

Quick news update!

A physical edition of the game is now available via Matranet!: http://www.matranet.net/boutique/msx/card/top/top.php

Overall design by S*T*A*R and cover art by Sirelion!

Por N.I

Master (173)

Imagen del N.I

25-06-2017, 05:06

Awesome! The physical edition is released early!

Por wyrdwad

Paladin (931)

Imagen del wyrdwad

25-06-2017, 05:27

Damn, not just Tales of Popolon, but Ghost is up on Matranet now too! I placed my order so damned fast, I think my keyboard is smoking now. Wink

-Tom

Por santiontanon

Paragon (1636)

Imagen del santiontanon

26-06-2017, 03:58

hahaha. even I don't have mine yet. But should arrive shortly, eager to see it in person myself Smile

Página 13/20
6 | 7 | 8 | 9 | 10 | 11 | 12 | | 14 | 15 | 16 | 17 | 18