Video hustler dissasembly listing with bluemsx debugger.question about im 1 instruction

Página 1/2
| 2

Por nikodr

Paladin (748)

imagem de nikodr

01-04-2008, 12:44

Hello i took a look at the listing produced by bluemsx debugger of Konami's msx1 game video hustler.

Start address of rom is 4064

here is part of the listing

4064 di
4065 im 1 ------------------>i have a question about the usage of this
4067 ld a,#c3
4069 ld (#fd9a),a
406c ld hl,#403c
406f ld (#fd9b),hl
4072 ld sp,#e400

I have never seen a konami game having an IM 1 instruction.My question is what is it there for?Is there any msx model that would start and boot up and when the game start to be in different interupt mode so someone would need an instruction like this?

Entrar ou registrar-se para comentar

Por jltursan

Prophet (2619)

imagem de jltursan

01-04-2008, 16:08

I really believe that there's no model of MSX booting in IM2 mode, nor MSX1 neither the next generations. This instruction could be a left-over from a programmers porting barebone of Konami; video-hustler is an old game and it could have been ported to MSX from another system,...maybe the Tomy Pyuuta?

Por Guillian

Prophet (3516)

imagem de Guillian

02-04-2008, 00:18

As far as I know, most Konami games has a similar initialization code that includes the IM1 instruction. Probably they added it to make sure the IM1 mode was selected.

Por jrcp_kun

Paragon (1410)

imagem de jrcp_kun

05-04-2008, 19:23

by the way....
what is IM1 mode?

Por MOA

Champion (293)

imagem de MOA

06-04-2008, 00:26

@jrcp_kun

IM 1 is the regular MSX interrupt mode (z80 calls address #0038 when an interrupt occurs).

There's also:
* IM 0 (z80 executes instruction placed on the databus by device that generates the interrupt)
* IM 2 (z80 fetches address from vector table and calls it. The table's MSB is stored in I register, LSB is placed on the databus by device that generates the interrupt)

Por jrcp_kun

Paragon (1410)

imagem de jrcp_kun

06-04-2008, 18:18

thanks, what is the purpose to do it at first?? call the interrupt only?? or is a instruction only for msx z80 structure in conversions??
thanks

Por MOA

Champion (293)

imagem de MOA

07-04-2008, 00:20

@jrcp_kun

It's a redundant instruction to use during init code on an MSX. It's only used by (demo) coders to restore from IM 2 (a very useful interrupt mode). Hence nikodr's question...

I think one of Konami's coders just wanted to be on the extreme safe side.

Por nikodr

Paladin (748)

imagem de nikodr

07-04-2008, 03:35

MOA i remember in some other thread http://www.msx.org/forumtopic7660.html asking about im2 and many people from here told me more or less that im2 is actually useless on msx2 because it was not fully implemented i think.I would like to hear your opinion on this.Is this im2 useful in anyway in msx machines?

Por ARTRAG

Enlighted (6923)

imagem de ARTRAG

07-04-2008, 10:07

IIR to be sure IM2 works on ANY msx, you need to waste quite a lot of RAM filling it with the addresses to be called

This means that it is used mainly for demos and not for real games or applications.

Por jltursan

Prophet (2619)

imagem de jltursan

07-04-2008, 10:36

For an example of a simple IM2 use, take a look here :)

Por MOA

Champion (293)

imagem de MOA

07-04-2008, 13:54

@nikodr

It works perfectly on MSX, but the LSB part that's put on the 8 bit data bus by the device that generates the interrupt (VDP) is 'unknown'.

The trick is to fill your vector table with 256 identical isr entry addresses with an MSB & LSB that are equal (for example: #C0C0).

Página 1/2
| 2