Back Previous Next

PlayFKiSS (versions 0.81, 0.83b, 0.84) by Chad Randall

Most PC owners will have used some version of this viewer, which wants slightly more than a 486, and runs comfortably on a 586-233Mhz with a hicolor display. Although all Windows viewers can also be used as editors, PlayFKiSS has an actual editor mode, and will display cel and object characteristics in the status bar - very convenient! Three features of the editor mode are:
The first version contains pkfs081x.exe, two demo sets, documentation and oadist.exe, a system files update that shouldn't be installed without making a backup first. The second version contains playfkis.exe another impressive demo set (balls.lzh) and FKiSS documentation, and the third only PlayFKiSS_084.exe. All three versions can be downloaded from Chad Randall's PlayFKiSS page (click on "Downloads").

Archive support: internal
FKiSS: 3
CKiSS: yes
Enhanced palette: yes (0.83b upwards)
Bugs and idiosyncrasies:

Only the later two versions support enhanced palette; version 0.81 doesn't support it but doesn't crash either, instead rendering everything in the colours of the first palette. EP support is more reliable in 0.84, as 0.83 may not work with all video adapters. Version 0.81 also doesn't recognize variables A0-9 to Z0-9; it will only work with variables A-Z.

Common to all versions:
- Does not recognize ifmoved().
- Will accept the version() event only once, so it's not possible to check the viewer for compatibility with more than one FKiSS level.
- Implements the syntax of ghost() in the reverse way: ghost(cel,0) ghosts a cel, ghost(cel,1) unghosts a cel. An easy workaround if the cel (this also applies to objects) only has to be ghosted once is the following:

;@  ghost(cel,1) ; the correct way to ghost a cel
;@press(cel) ; can the cel still be pressed?
;@  ghost(cel,0) ; the PlayFKiSS 0.8x way to ghost a cel

- Forces the palette to the page's initial palette group each time the user changes page.
- Will not detect collision if only one pixel overlaps; hence, it will never detect collision for a cel which is only 1 pixel in size.
- Will not visibly render a cel which is only two or less than two pixels in size. The cel can be dragged and will react to events, though.
- Doesn't loop midi files, which is good, but when the music() command is issued while a midi plays, an error message appears that system resource such-and-such is in use, as opposed to older viewers which simply stop playing the first midi and start playing the second one. To prevent this error message appearing, use music("") before every music("midifile.mid") to free this system resource.
- Rewrites the cnf when saving it, which is not a bug, but in doing so, erases all comments, puts each action or event on a separate line (which really expands the cnf file) and changes any %tn tag to transparent(n), which is what supposedly makes the viewer crash when saving for the second time (PlayFKiSS's transparency bug). This also supposedly doesn't happen in version 0.84, but I've found all versions have trouble with the %t tag and may crash during the first save, or save several times without crashing. If the viewer does crash, the cnf is lost or cut off somewhere in the middle. It's a good idea to keep a backup, and/or add the transparency tags manually afterwards.
- Considers cel overlaps just before a set change a collision; a set change may therefore trigger collide(). This is not typical viewer behaviour and was implemented specifically at the request of one user; so, it's not a bug, but it's something that won't work in every viewer and shouldn't be relied on to make a set work.
- Produces a list of missing cels/palettes, if any, at set load, but is extremely permissive about syntax mistakes, allowing things like "collideo()", "ghosted()" and if-statements without a closing endif(). Sets written on PlayFKiSS should be tested by a cnf checker. (A number of viewers have built-in cnf-checking: PlayKISS, GnomeKiSS, UltraKiSS, and for anything lower than FKiSS3, KiSSLD.)
- Ambiguous cels are dealt with inconsistently; it seems actions have an effect on all instances of a cel, and events only on the first one.
- When a notify() event pops up just before a release() should have been triggered, then due to the shift of focus (excuse the programmerese) the release() event will not fire.
- When you import a 16-colour cel and try to save the offset, the cel may be wiped. (This I only know from hearsay.)
- Not a bug, but non-standard; the viewer has a default palette which it applies to any cels that need a kcf but haven't been assigned one.
- Rather important when coding a set meant to be portable but tested only with PlayFKiSS: this viewer can handle astoundingly big sets and short alarms. This means that a set which runs well under PlayFKiSS can run out of memory and crash in a different viewer, or that animation effects may not be as smooth.

Click here for a screenshot of version 0.84.

Back Previous Next