SkoolKit 8.2

Introduce yourself. Pimp your website, competition, event or other activity here, as long as it's Spectrum related.
Post Reply
User avatar
SkoolKid
Manic Miner
Posts: 407
Joined: Wed Nov 15, 2017 3:07 pm

SkoolKit 8.2

Post by SkoolKid »

SkoolKit 8.2 has been released.

In case you're unfamiliar with SkoolKit or need a reminder of what it is, please read on.

With SkoolKit you can:
  • use sna2ctl.py to generate a control file (an attempt to identify routines and data blocks by static analysis) from a snapshot (SNA, SZX or Z80) or raw memory file
  • enable sna2ctl.py to generate a much better control file that more reliably distinguishes code from data by using a code execution map produced by an emulator
  • use sna2skool.py along with this control file to produce a disassembly of a snapshot or raw memory file
  • add annotations to this disassembly (or the control file) as you discover the purpose of each routine and data block
  • use skool2html.py to convert a disassembly into a bunch of HTML files (with annotations in place, and the operands of CALL and JP instructions converted into hyperlinks)
  • use skool2asm.py to convert a disassembly into an assembler source file (also with annotations in place)
  • use skool2ctl.py to convert a disassembly back into a control file (with annotations retained)
  • use skool2bin.py to convert a disassembly into a raw memory file
  • use tap2sna.py to convert a TAP or TZX file into a 'pristine' Z80 snapshot
  • use snapinfo.py to analyse a snapshot or raw memory file and list the BASIC program it contains, show register values, produce a call graph, find tile graphic data, find text, or find sequences of arbitrary byte values
  • use tapinfo.py to analyse the blocks in a TAP or TZX file, and list the BASIC program it contains
  • use bin2tap.py to convert a snapshot or raw memory file into a TAP file
  • use bin2sna.py to convert a raw memory file into a Z80 snapshot
  • use snapmod.py to modify the register values or memory contents in a Z80 snapshot
  • use sna2img.py to convert graphic data in a disassembly, SCR file, snapshot or raw memory file into a PNG image
In an HTML disassembly produced by skool2html.py you can also:
  • use the #UDG, #UDGARRAY, #FONT and #SCR macros to build still and animated PNG images from graphic data
  • use the #R macro in annotations to create hyperlinks between routines and data blocks that refer to each other
  • use [Bug:*], [Fact:*] and [Poke:*] sections in a ref file to neatly render lists of bugs, trivia and POKEs on separate pages
For details on what's new in 8.2, check the changelog.
SkoolKit - disassemble a game today
Pyskool - a remake of Skool Daze and Back to Skool
User avatar
Guesser
Manic Miner
Posts: 641
Joined: Wed Nov 15, 2017 2:35 pm
Contact:

Re: SkoolKit 8.2

Post by Guesser »

@expand and #DEFINE are great!

I was banging my head wishing it had that functionality just yesterday! :lol:

/me goes mad writing custom macros with custom macros for everything.
User avatar
SkoolKid
Manic Miner
Posts: 407
Joined: Wed Nov 15, 2017 3:07 pm

Re: SkoolKit 8.2

Post by SkoolKid »

What's also funny is that I've had #DEFINE on my TODO list since at least SkoolKit 2.4.1 back in January 2012.

Better late than never I suppose!
SkoolKit - disassemble a game today
Pyskool - a remake of Skool Daze and Back to Skool
User avatar
Guesser
Manic Miner
Posts: 641
Joined: Wed Nov 15, 2017 2:35 pm
Contact:

Re: SkoolKit 8.2

Post by Guesser »

I wonder if we should have a repository of useful macros, like the old forum thread full of basic DEF FNs :lol:
User avatar
SkoolKid
Manic Miner
Posts: 407
Joined: Wed Nov 15, 2017 3:07 pm

Re: SkoolKit 8.2

Post by SkoolKid »

One thing I forgot to mention in the blurb is that SkoolKit isn't limited to the Z80 any more.

If you want, you can go rogue and disassemble 6502 code as well. See this C64 ROM disassembly, for example.

Obviously you'd only want to mess around with 6502 code if you were bored or had nothiing better to do, but the option is there now anyway. :D
SkoolKit - disassemble a game today
Pyskool - a remake of Skool Daze and Back to Skool
akeley
Dynamite Dan
Posts: 1048
Joined: Sat Feb 01, 2020 5:47 pm

Re: SkoolKit 8.2

Post by akeley »

[mention]SkoolKid[/mention] so it says I can convert a tzx/tap into perfect Z80? Is it possible to do in a batch?

What I'm thinking, maybe it could be a solution to my tzx-to-tap conundrum. My DIV only takes tap/z80/sna files. And huge part of my collection is in tzx, so i was batch converting tzx to tap using tzx2tap software. Unfortunately a lot of taps converted this way do not work.

Do you think it's a plausible scenario? (batch convert a heap of tzx's -> z80 using your script, so I could use them on my DIV?)
User avatar
Guesser
Manic Miner
Posts: 641
Joined: Wed Nov 15, 2017 2:35 pm
Contact:

Re: SkoolKit 8.2

Post by Guesser »

SkoolKid wrote: Wed Jul 22, 2020 2:53 pm One thing I forgot to mention in the blurb is that SkoolKit isn't limited to the Z80 any more.

If you want, you can go rogue and disassemble 6502 code as well. See this C64 ROM disassembly, for example.

Obviously you'd only want to mess around with 6502 code if you were bored or had nothiing better to do, but the option is there now anyway. :D
Hmm... I might actually have a use for that...
I would have to have a second try at learning 6502 though :?
User avatar
SkoolKid
Manic Miner
Posts: 407
Joined: Wed Nov 15, 2017 3:07 pm

Re: SkoolKit 8.2

Post by SkoolKid »

akeley wrote: Wed Jul 22, 2020 3:35 pm @SkoolKid so it says I can convert a tzx/tap into perfect Z80? Is it possible to do in a batch?

What I'm thinking, maybe it could be a solution to my tzx-to-tap conundrum. My DIV only takes tap/z80/sna files. And huge part of my collection is in tzx, so i was batch converting tzx to tap using tzx2tap software. Unfortunately a lot of taps converted this way do not work.

Do you think it's a plausible scenario? (batch convert a heap of tzx's -> z80 using your script, so I could use them on my DIV?)
Unfortunately, the answer is probably not. tap2sna.py, with default options, will only convert a TAP/TZX file into a working Z80 snapshot if that tape file is very simple - probably so simple that whatever TZX-to-TAP converter you've been using would already produce a working TAP file anyway.

The reason is that SkoolKit isn't an emulator, so it has no idea how a real Spectrum would load a particular tape. For anything but the simplest tapes, you need to tell tap2sna.py which blocks to load where in order to build a 'pristine' snapshot.

In an ideal world where I had the time, I'd build a large library of tap2sna.py recipes (like this one for Skool Daze) so that whenever someone wanted to create a snapshot of a game, they could pluck the recipe from this library and use tap2sna.py to build one. Right now, though, that library is pretty small. :)
SkoolKit - disassemble a game today
Pyskool - a remake of Skool Daze and Back to Skool
User avatar
SkoolKid
Manic Miner
Posts: 407
Joined: Wed Nov 15, 2017 3:07 pm

Re: SkoolKit 8.2

Post by SkoolKid »

Guesser wrote: Wed Jul 22, 2020 5:20 pm Hmm... I might actually have a use for that...
I would have to have a second try at learning 6502 though :?
Well, let me know once you've finished learning, and then I'll get round to writing up some brief instructions somewhere on how to use sk6502. :)
SkoolKit - disassemble a game today
Pyskool - a remake of Skool Daze and Back to Skool
akeley
Dynamite Dan
Posts: 1048
Joined: Sat Feb 01, 2020 5:47 pm

Re: SkoolKit 8.2

Post by akeley »

Fair enough, I thought it might be a bit of a "too good to be true" scenario. Yep, it sounds similar to how my tzx2tap works, because that utility does not recognise the structure of more complex tzx files and ends up converting just one block and calling it a day :)
User avatar
Guesser
Manic Miner
Posts: 641
Joined: Wed Nov 15, 2017 2:35 pm
Contact:

Re: SkoolKit 8.2

Post by Guesser »

SkoolKid wrote: Wed Jul 22, 2020 6:03 pm Well, let me know once you've finished learning, and then I'll get round to writing up some brief instructions somewhere on how to use sk6502. :)
I'm not in a rush to start yet another disassembly right now, let alone learn a new CPU architecture :)
Maybe when the unfinished projects list gets back into single figures ( :lol: )
Post Reply