View Full Version : Changing postcommands into precommands
jsoto
20th September 2004, 20:57
Well, although the starting point for this discussion is this post (http://forum.doom9.org/showthread.php?postid=545653#post545653) and the following ones I've started a new thread because IMHO the discussion may be out of scope of PGCEdit.
In the clear scenario that 2COOL has proposed, I'm wondering what happens if precommand 3 is true and program 2 (which has been blanked) is going to be executed. Imagine Program 2 was practically the complete PGC with, let's say, 20 cells. In this situation, 20 blanked Cells are (more or less) 10 seconds length. I do not like this.
So what I'd like to have is a more precise command parsing, detecting this Link/Jump/Call commands and process them as we are currently doing with Break ones (Solid and Conditional).
Is that possible?
Which commands do we have to process?
jsoto
2COOL
21st September 2004, 04:59
OK, I found an actual PGC that would be a perfect example of what jsoto is trying to visualize, courtesy of PgcEdit's PGC Command dump. I got this from one of my movies currently on my harddrive, Van Wilder Unrated R1. This DVD had dual aspect ratio versions and below is my fullscreen Title. In the new Command table, I had used PgcEdit's Blank all VTS Titles and Kill Playback (unconditionally) macros. Comments in Cell commands show which Programs execute specific cell command. The commands in RED represent new and edited commands.
OLD:
VTST 4 / TTN 1 (1:33:58) Title 4
********** pre commands:
[00 00 00 00 00 00 00 00] 1 NOP
[00 00 00 00 00 00 00 00] 2 NOP
[00 00 00 00 00 00 00 00] 3 NOP
[00 00 00 00 00 00 00 00] 4 NOP
[00 00 00 00 00 00 00 00] 5 NOP
[61 00 00 00 00 06 00 00] 6 Set gprm(0) =(mov) gprm(6)
[71 00 00 06 00 00 00 00] 7 Set gprm(6) =(mov) 0 ".."
[71 00 00 01 00 00 00 00] 8 Set gprm(1) =(mov) 0 ".."
[71 00 00 02 00 00 00 00] 9 Set gprm(2) =(mov) 0 ".."
[00 A2 00 00 00 01 00 00] 10 if ( gprm(0) == 1 ".." ) then { Break }
[20 A6 00 00 00 02 00 02] 11 if ( gprm(0) == 2 ".." ) then { LinkPGN Program 2 }
[20 A6 00 00 00 03 00 03] 12 if ( gprm(0) == 3 ".." ) then { LinkPGN Program 3 }
[20 A6 00 00 00 04 00 04] 13 if ( gprm(0) == 4 ".." ) then { LinkPGN Program 4 }
[20 A6 00 00 00 05 00 05] 14 if ( gprm(0) == 5 ".." ) then { LinkPGN Program 5 }
[20 A6 00 00 00 06 00 06] 15 if ( gprm(0) == 6 ".." ) then { LinkPGN Program 6 }
[20 A6 00 00 00 07 00 07] 16 if ( gprm(0) == 7 ".." ) then { LinkPGN Program 7 }
[20 A6 00 00 00 08 00 08] 17 if ( gprm(0) == 8 ".." ) then { LinkPGN Program 8 }
[20 A6 00 00 00 09 00 09] 18 if ( gprm(0) == 9 ".." ) then { LinkPGN Program 9 }
[20 A6 00 00 00 0A 00 0A] 19 if ( gprm(0) == 10 ".." ) then { LinkPGN Program 10 }
[20 A6 00 00 00 0B 00 0B] 20 if ( gprm(0) == 11 ".." ) then { LinkPGN Program 11 }
[20 A6 00 00 00 0C 00 0C] 21 if ( gprm(0) == 12 ".." ) then { LinkPGN Program 12 }
[20 A6 00 00 00 0D 00 0D] 22 if ( gprm(0) == 13 ".." ) then { LinkPGN Program 13 }
[20 A6 00 00 00 0E 00 0E] 23 if ( gprm(0) == 14 ".." ) then { LinkPGN Program 14 }
[20 A6 00 00 00 0F 00 0F] 24 if ( gprm(0) == 15 ".." ) then { LinkPGN Program 15 }
[20 A6 00 00 00 10 00 10] 25 if ( gprm(0) == 16 ".." ) then { LinkPGN Program 16 }
[20 A6 00 00 00 11 00 11] 26 if ( gprm(0) == 17 ".." ) then { LinkPGN Program 17 }
[20 A6 00 00 00 12 00 12] 27 if ( gprm(0) == 18 ".." ) then { LinkPGN Program 18 }
[20 A6 00 00 00 13 00 13] 28 if ( gprm(0) == 19 ".." ) then { LinkPGN Program 19 }
[20 A6 00 00 00 14 00 14] 29 if ( gprm(0) == 20 ".." ) then { LinkPGN Program 20 }
[20 A6 00 00 00 15 00 15] 30 if ( gprm(0) == 21 ".." ) then { LinkPGN Program 21 }
[20 A6 00 00 00 16 00 16] 31 if ( gprm(0) == 22 ".." ) then { LinkPGN Program 22 }
[20 A6 00 00 00 17 00 17] 32 if ( gprm(0) == 23 ".." ) then { LinkPGN Program 23 }
[20 A6 00 00 00 18 00 18] 33 if ( gprm(0) == 24 ".." ) then { LinkPGN Program 24 }
[20 A6 00 00 00 19 00 19] 34 if ( gprm(0) == 25 ".." ) then { LinkPGN Program 25 }
[20 A6 00 00 00 1A 00 1A] 35 if ( gprm(0) == 26 ".." ) then { LinkPGN Program 26 }
********** post commands:
[30 08 00 0C 01 C0 00 00] 1 (CallSS) Call the VMGM PGC 12, resume cell 1
********** cell commands:
[30 08 00 0C 01 C0 00 00] 1 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 23
[30 08 00 0C 01 C0 00 00] 2 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 24
[30 08 00 0C 01 C0 00 00] 3 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 25
[30 08 00 0C 01 C0 00 00] 4 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 26
_______________________________________________
NEW:
VTST 4 / TTN 1 (0:10) Title 4
********** pre commands:
[00 00 00 00 00 00 00 00] 1 NOP
[00 00 00 00 00 00 00 00] 2 NOP
[00 00 00 00 00 00 00 00] 3 NOP
[00 00 00 00 00 00 00 00] 4 NOP
[00 00 00 00 00 00 00 00] 5 NOP
[61 00 00 00 00 06 00 00] 6 Set gprm(0) =(mov) gprm(6)
[71 00 00 06 00 00 00 00] 7 Set gprm(6) =(mov) 0 ".."
[71 00 00 01 00 00 00 00] 8 Set gprm(1) =(mov) 0 ".."
[71 00 00 02 00 00 00 00] 9 Set gprm(2) =(mov) 0 ".."
[00 A1 00 00 00 01 00 24] 10 if ( gprm(0) == 1 ".." ) then { Goto line 36 } // Changed
[20 A6 00 00 00 02 00 02] 11 if ( gprm(0) == 2 ".." ) then { LinkPGN Program 2 }
[20 A6 00 00 00 03 00 03] 12 if ( gprm(0) == 3 ".." ) then { LinkPGN Program 3 }
[20 A6 00 00 00 04 00 04] 13 if ( gprm(0) == 4 ".." ) then { LinkPGN Program 4 }
[20 A6 00 00 00 05 00 05] 14 if ( gprm(0) == 5 ".." ) then { LinkPGN Program 5 }
[20 A6 00 00 00 06 00 06] 15 if ( gprm(0) == 6 ".." ) then { LinkPGN Program 6 }
[20 A6 00 00 00 07 00 07] 16 if ( gprm(0) == 7 ".." ) then { LinkPGN Program 7 }
[20 A6 00 00 00 08 00 08] 17 if ( gprm(0) == 8 ".." ) then { LinkPGN Program 8 }
[20 A6 00 00 00 09 00 09] 18 if ( gprm(0) == 9 ".." ) then { LinkPGN Program 9 }
[20 A6 00 00 00 0A 00 0A] 19 if ( gprm(0) == 10 ".." ) then { LinkPGN Program 10 }
[20 A6 00 00 00 0B 00 0B] 20 if ( gprm(0) == 11 ".." ) then { LinkPGN Program 11 }
[20 A6 00 00 00 0C 00 0C] 21 if ( gprm(0) == 12 ".." ) then { LinkPGN Program 12 }
[20 A6 00 00 00 0D 00 0D] 22 if ( gprm(0) == 13 ".." ) then { LinkPGN Program 13 }
[20 A6 00 00 00 0E 00 0E] 23 if ( gprm(0) == 14 ".." ) then { LinkPGN Program 14 }
[20 A6 00 00 00 0F 00 0F] 24 if ( gprm(0) == 15 ".." ) then { LinkPGN Program 15 }
[20 A6 00 00 00 10 00 10] 25 if ( gprm(0) == 16 ".." ) then { LinkPGN Program 16 }
[20 A6 00 00 00 11 00 11] 26 if ( gprm(0) == 17 ".." ) then { LinkPGN Program 17 }
[20 A6 00 00 00 12 00 12] 27 if ( gprm(0) == 18 ".." ) then { LinkPGN Program 18 }
[20 A6 00 00 00 13 00 13] 28 if ( gprm(0) == 19 ".." ) then { LinkPGN Program 19 }
[20 A6 00 00 00 14 00 14] 29 if ( gprm(0) == 20 ".." ) then { LinkPGN Program 20 }
[20 A6 00 00 00 15 00 15] 30 if ( gprm(0) == 21 ".." ) then { LinkPGN Program 21 }
[20 A6 00 00 00 16 00 16] 31 if ( gprm(0) == 22 ".." ) then { LinkPGN Program 22 }
[20 A6 00 00 00 17 00 17] 32 if ( gprm(0) == 23 ".." ) then { LinkPGN Program 23 }
[20 A6 00 00 00 18 00 18] 33 if ( gprm(0) == 24 ".." ) then { LinkPGN Program 24 }
[20 A6 00 00 00 19 00 19] 34 if ( gprm(0) == 25 ".." ) then { LinkPGN Program 25 }
[20 A6 00 00 00 1A 00 1A] 35 if ( gprm(0) == 26 ".." ) then { LinkPGN Program 26 }
[00 00 00 00 00 00 00 00] 36 NOP // New
[30 08 00 0C 01 C0 00 00] 37 (CallSS) Call the VMGM PGC 12, resume cell 1 // Copy of Post Cmd
********** post commands:
[30 08 00 0C 01 C0 00 00] 1 (CallSS) Call the VMGM PGC 12, resume cell 1
********** cell commands:
[30 08 00 0C 01 C0 00 00] 1 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 23
[30 08 00 0C 01 C0 00 00] 2 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 24
[30 08 00 0C 01 C0 00 00] 3 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 25
[30 08 00 0C 01 C0 00 00] 4 (CallSS) Call the VMGM PGC 12, resume cell 1 // Program 26
In NEW command table above, if Pre command 11 was true, ...
[20 A6 00 00 00 02 00 02] 11 if ( gprm(0) == 2 ".." ) then { LinkPGN Program 2 }
...then Programs 2 thru 23 would play in a row. It stops at the end of Program 23 because it holds Cell command 1. Since each Program or Cell will play a 10KB blank (15 frames), a total of 330 blank frames would display.
22 Programs * 15 frames = 330 frames.
That's alot! :( Time wise, that would put it at [00:00:23.00 / 30 fps]. Counting while it played in IfoEdit, for me, it was about 7 to 8 seconds of playtime.
r0lZ
21st September 2004, 14:38
The commands to process are Link*Cell, LinkCN, Link*PG, LinkPGN and LinkPTT. Ie, all Link commands except Link*PGC*. However, I wonder if a LinkNextCell (for example) may jump to another PGC. In that case, you should leave it alive.
Also, you should take care of endless loops with LinkTopPGC, LinkPGCN (linking to the same PGC), and some Link or Jump commands in post commands. I think there are risks of endless loop in menu PGCs with buttons, or in situations like this:
Before kill playback:
VTST 2 , TTN 1 (2:02) Title 3
********** pre commands:
[71 00 00 05 00 00 00 00] 1 Set gprm(5) =(mov) 0 ".."
********** post commands:
[30 03 00 00 00 01 00 00] 1 (JumpVTS_TT) Jump to TTN 1 in this VTS
********** cell commands:
After kill playback:
VTST 2 , TTN 1 (2:02) Title 3
********** pre commands:
[71 00 00 05 00 00 00 00] 1 Set gprm(5) =(mov) 0 ".."
[00 00 00 00 00 00 00 00] 2 NOP
[30 03 00 00 00 01 00 00] 3 (JumpVTS_TT) Jump to TTN 1 in this VTS
********** post commands:
[30 03 00 00 00 01 00 00] 1 (JumpVTS_TT) Jump to TTN 1 in this VTS
********** cell commands:
Endless loop! And calling the menu with the remote works only when playing a video. So, after kill playback, there is no way to exit the loop.
jsoto
21st September 2004, 19:19
Thanks, guys.
I see... it's not so easy.
So, what I can try to do is:
- Change all Link*Cell, LinkCN, Link*PG, LinkPGN and LinkPTT with the Goto command (solid or conditional) to the "old" post command area.
- Check (this seems to me not so easy) for never ending loops. If they are, UNDO the post into pre conversion and issue an advice to the user (may be he wants to do it manually...)
Any comments?
In any case cell commands will not be executed...
BTW, could anyone clarify me the PTT numbering? I would like to identify the PGC number in JumpVTS_PTT or LinkPTT, and I'm not able to do it.
jsoto
r0lZ
22nd September 2004, 11:56
BTW, could anyone clarify me the PTT numbering? I would like to identify the PGC number in JumpVTS_PTT or LinkPTT, and I'm not able to do it.
You have to look in the VTS_PTT_SRPT table (called PTT_SRPTI in IfoEdit).
Example:[00000000] Number of Title Unit Search Pointers (TTUs) in the VTS 2 [0002]
[00000004] End byte of PTT_SRPT table 183 [000000b7]
[00000008] TTU_1: Starting byte 16 [00000010]
[0000000c] TTU_2: Starting byte 176 [000000b0]
TTU_1 PTTs:
[00000010] PTT_1: Programm Chain number (PGCN) 1 [0001]
[00000012] PTT_1: Programm number (PGN) 1 [0001]
[00000014] PTT_2: Programm Chain number (PGCN) 1 [0001]
[00000016] PTT_2: Programm number (PGN) 2 [0002]
[00000018] PTT_3: Programm Chain number (PGCN) 1 [0001]
[0000001a] PTT_3: Programm number (PGN) 3 [0003]
[0000001c] PTT_4: Programm Chain number (PGCN) 1 [0001]
[0000001e] PTT_4: Programm number (PGN) 4 [0004]
[00000020] PTT_5: Programm Chain number (PGCN) 1 [0001]
[00000022] PTT_5: Programm number (PGN) 5 [0005]
[00000024] PTT_6: Programm Chain number (PGCN) 1 [0001]
[00000026] PTT_6: Programm number (PGN) 6 [0006]
[00000028] PTT_7: Programm Chain number (PGCN) 1 [0001]
[0000002a] PTT_7: Programm number (PGN) 7 [0007]
[0000002c] PTT_8: Programm Chain number (PGCN) 1 [0001]
[0000002e] PTT_8: Programm number (PGN) 8 [0008]
[00000030] PTT_9: Programm Chain number (PGCN) 1 [0001]
[00000032] PTT_9: Programm number (PGN) 9 [0009]
[00000034] PTT_10: Programm Chain number (PGCN) 1 [0001]
[00000036] PTT_10: Programm number (PGN) 10 [000a]
[00000038] PTT_11: Programm Chain number (PGCN) 1 [0001]
[0000003a] PTT_11: Programm number (PGN) 11 [000b]
[0000003c] PTT_12: Programm Chain number (PGCN) 1 [0001]
[0000003e] PTT_12: Programm number (PGN) 12 [000c]
[00000040] PTT_13: Programm Chain number (PGCN) 1 [0001]
[00000042] PTT_13: Programm number (PGN) 13 [000d]
[00000044] PTT_14: Programm Chain number (PGCN) 1 [0001]
[00000046] PTT_14: Programm number (PGN) 14 [000e]
[00000048] PTT_15: Programm Chain number (PGCN) 1 [0001]
[0000004a] PTT_15: Programm number (PGN) 15 [000f]
[0000004c] PTT_16: Programm Chain number (PGCN) 1 [0001]
[0000004e] PTT_16: Programm number (PGN) 16 [0010]
[00000050] PTT_17: Programm Chain number (PGCN) 1 [0001]
[00000052] PTT_17: Programm number (PGN) 17 [0011]
[00000054] PTT_18: Programm Chain number (PGCN) 1 [0001]
[00000056] PTT_18: Programm number (PGN) 18 [0012]
[00000058] PTT_19: Programm Chain number (PGCN) 1 [0001]
[0000005a] PTT_19: Programm number (PGN) 19 [0013]
[0000005c] PTT_20: Programm Chain number (PGCN) 1 [0001]
[0000005e] PTT_20: Programm number (PGN) 20 [0014]
[00000060] PTT_21: Programm Chain number (PGCN) 1 [0001]
[00000062] PTT_21: Programm number (PGN) 21 [0015]
[00000064] PTT_22: Programm Chain number (PGCN) 1 [0001]
[00000066] PTT_22: Programm number (PGN) 22 [0016]
[00000068] PTT_23: Programm Chain number (PGCN) 1 [0001]
[0000006a] PTT_23: Programm number (PGN) 23 [0017]
[0000006c] PTT_24: Programm Chain number (PGCN) 1 [0001]
[0000006e] PTT_24: Programm number (PGN) 24 [0018]
[00000070] PTT_25: Programm Chain number (PGCN) 1 [0001]
[00000072] PTT_25: Programm number (PGN) 25 [0019]
[00000074] PTT_26: Programm Chain number (PGCN) 1 [0001]
[00000076] PTT_26: Programm number (PGN) 26 [001a]
[00000078] PTT_27: Programm Chain number (PGCN) 1 [0001]
[0000007a] PTT_27: Programm number (PGN) 27 [001b]
[0000007c] PTT_28: Programm Chain number (PGCN) 1 [0001]
[0000007e] PTT_28: Programm number (PGN) 28 [001c]
[00000080] PTT_29: Programm Chain number (PGCN) 1 [0001]
[00000082] PTT_29: Programm number (PGN) 29 [001d]
[00000084] PTT_30: Programm Chain number (PGCN) 1 [0001]
[00000086] PTT_30: Programm number (PGN) 30 [001e]
[00000088] PTT_31: Programm Chain number (PGCN) 1 [0001]
[0000008a] PTT_31: Programm number (PGN) 31 [001f]
[0000008c] PTT_32: Programm Chain number (PGCN) 1 [0001]
[0000008e] PTT_32: Programm number (PGN) 32 [0020]
[00000090] PTT_33: Programm Chain number (PGCN) 1 [0001]
[00000092] PTT_33: Programm number (PGN) 33 [0021]
[00000094] PTT_34: Programm Chain number (PGCN) 1 [0001]
[00000096] PTT_34: Programm number (PGN) 34 [0022]
[00000098] PTT_35: Programm Chain number (PGCN) 1 [0001]
[0000009a] PTT_35: Programm number (PGN) 35 [0023]
[0000009c] PTT_36: Programm Chain number (PGCN) 1 [0001]
[0000009e] PTT_36: Programm number (PGN) 36 [0024]
[000000a0] PTT_37: Programm Chain number (PGCN) 1 [0001]
[000000a2] PTT_37: Programm number (PGN) 37 [0025]
[000000a4] PTT_38: Programm Chain number (PGCN) 1 [0001]
[000000a6] PTT_38: Programm number (PGN) 38 [0026]
[000000a8] PTT_39: Programm Chain number (PGCN) 1 [0001]
[000000aa] PTT_39: Programm number (PGN) 39 [0027]
[000000ac] PTT_40: Programm Chain number (PGCN) 1 [0001]
[000000ae] PTT_40: Programm number (PGN) 40 [0028]
TTU_2 PTTs:
[000000b0] PTT_1: Programm Chain number PGCN 2 [0002]
[000000b2] PTT_1: Programm number PG 1 [0001]
[000000b4] PTT_2: Programm Chain number PGCN 2 [0002]
[000000b6] PTT_2: Programm number PG 2 [0002]
The titles of the current VTS (called TTUs) are listed here in increasing order.
The PgcEdit method is to parse this table when the IFO is read from disk. For each PGC, I build a table with the program number of the PTT.
For each title (TTU), begin by parsing the starting byte, and compute the end byte (= starting byte of the next TTU -1, or, for the last TTU, = end byte of table). You can now compute the number of chapters: nchapters = (end_byte - start_byte + 1) / 4.
Then, for each chapter, read the PGC number: 2 bytes, at offset start_byte + ((chapternumber-1)*4) and the program number: 2 bytes, at same offset+2.
Then store the PG number for the current PTT of the current PGC.
Take care: remember that in some occasions (non sequential PGCs), a single title may be spread over several PGCs!
jsoto
22nd September 2004, 17:10
Many thanks for your support, but my question is how the chapters are numbered in the Jump instruction.
Using your example:
JumpVTS_PTT with PTT=42 is a Jump to PGCN=2 Chapter 2
Is it correct?. My doubt is due IFOEdit resets the chapter numbering when the title number changes
jsoto
r0lZ
22nd September 2004, 18:11
No. The JumpVTS_PTT command has the TTN parameter. The jump must be done to an existing PTT for that TTN.
To jump to PGCN 2, Chapter 2, you should use:
[30 05 00 02 00 02 00 00] 1 (JumpVTS_PTT) Jump to TTN 2, Chapter 2
jsoto
22nd September 2004, 19:56
OK. Many thanks, r0lZ
I believe I've all the required info. It's time to code...
jsoto
EDIT for clarification: My confusion cames from
http://www.dvd-replica.com/DVD/jumpvtsptt.php?p=1
which is obviously wrong. Second parameter is TTN instead of VTS. The right info is
http://dvd.sourceforge.net/dvdinfo/vmi.html
jsoto
28th September 2004, 23:02
This is what I finally did in VobBlanker. It's not managing all the situations/commands, but seems to me the most of them are included.
A) Is executed if "Change always" is not checked (default)
B) Is executed always in order to detect possible never ending loops
C) Is precommand processing
Take into account that all cells in the PGC have been blanked, so jumping to a cell of the same PGC has no sense
Please comment
A) If (cell commands AND always is not checked) Explore cell commands:
{
Look for cell commands different of Solid Lnk Group and Solid LnkPGN/PTTN/CN
If (found) exit without changing
}
B) Explore postcommands:
For (i=0; i<nPost ;i++)
{
Look for Solid/Conditional LinkPGCN (to this PGC).
Look for JumpVTS_TT/PTT (to this Title).
Look for Solid/Conditional Lnk Group and Solid/Conditional LnkPGN/PTTN/CN
}
If (found) exit without changing;
C) Process precommands:
For (i=0; i<nPre ;i++)
{
Look for Solid/Conditional Break. If (found) Change by Solid/Cond Goto.
Look for Solid/Conditional Lnk Subset If (found) Change by Solid/Cond Goto.
Look for Solid/Conditional LnkPTTN LinkPGN LinkCN
If (found) Change by Solid/Cond LnkPTTN LinkPGN LinkCN
}
D) Change nPost = nPost + nPre;
nPost = 0
jsoto
r0lZ
29th September 2004, 09:13
Seems good.
Note that it is theorically possible to have never ending loops sharing several PGCs.
Example: this situation is still problematic if you blank out both PGCs:VTST 2 , TTN 1 (2:02) Title 3
********** pre commands:
********** post commands:
[30 03 00 00 00 02 00 00] 1 (JumpVTS_TT) Jump to TTN 2 in this VTS
********** cell commands:
VTST 2 , TTN 2 (2:02) Title 4
********** pre commands:
********** post commands:
[30 03 00 00 00 01 00 00] 1 (JumpVTS_TT) Jump to TTN 1 in this VTS
********** cell commands:
Also, I don't understand what you are doing in C):Look for Solid/Conditional LnkPTTN LinkPGN LinkCN
If (found) Change by Solid/Cond LnkPTTN LinkPGN LinkCN
What are you changing?
jsoto
29th September 2004, 12:40
Note that it is theorically possible to have never ending loops sharing several PGCs.
Yeah, and using three or more PGCs.... So, the conclusion is the user has to test the final DVD in any case.
Also, I don't understand what you are doing in C):
Ooops, a cut & paste problem (also present in the help). What I'm doing is:
Look for Solid/Conditional LnkPTTN LinkPGN LinkCN
If (found) Change by Solid/Cond Goto
Goto's are always to the "old" postcommand area.
jsoto
P3gasus
30th September 2004, 09:21
Originally posted by jsoto
Yeah, and using three or more PGCs.... So, the conclusion is the user has to test the final DVD in any case.
This a known problem in teoric informatic. Discovering never ending loops is not feasible in less than exponential time. So don't expect to find a solution ;)
BYE
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.